سؤال تضغط مفاتيح الأسهم على الأحرف في محرر vi


عندما حاولت استخدام مفاتيح الأسهم في وضع الإدراج في vi محرر يتم إدراج الأحرف التالية في المحرر:

  • إلى عن على  أحصل على B ،
  • إلى عن على  أحصل على A ،
  • إلى عن على  أحصل على D ،
  • إلى عن على  أنا أحصل على C.

الرجاء مساعدتي في حل هذه المشكلة.


143
2017-10-05 05:04


الأصل


كان لدي ضحكة جيدة في قراءة العنوان ؛) أنا متأكد من أن هناك XKCD للشعور المخيف الذي يأتي (للمستخدمين المبتدئين) عندما يقوم مفتاح السهم بطباعة الحروف. - vvy


الأجوبة:


إذا لم يكن لديك بالفعل .vimrc ملف في الدليل الرئيسي الخاص بك ، قم بإنشاء واحد باستخدام هذا:

vim ~/.vimrc

أضف هذا السطر إلى أعلى الملف:

set nocompatible

احفظ الملف وهذا يجب أن يصلح المشكلة لك. :)


178
2017-10-05 07:23



اضطررت إلى إنشاء ملف. exrc ل vi ، ولكن وضع nocompatible عملت كبيرة. - tgun926
هناك خدعة إذا كنت تستخدم vi بدلا من vimعليك أن تفعل نفس التكوين ولكن في ~/.exrc ملف. - tzi
عمل. ولكن لماذا هذا الإصلاح مطلوب؟ لماذا افتراضيا لا يتعامل مع الأسهم؟ - Mohit
بشكل افتراضي ، يتم برمجة vi / vim لاستبدال مفاتيح الأسهم مع مفاتيح h، j، k، l. يتم ذلك حتى لا تضطر إلى الانتقال من منطقة المفتاح الرئيسية في لوحة المفاتيح. - Gaurav Manchanda
المشكلة التالية هي backspace ، الحل: askubuntu.com/questions/296385/... - daVe


تثبيت vim -> هذا سوف يحل المشكلة.

sudo apt-get install vim

هناك العديد من البرامج التعليمية الناجحة / vi على youtube أو الويب بشكل عام. لمشكلتك ، انظر هنا

ثم تابع فتح الملفات كالمعتاد:

vi desired-file

47
2017-11-21 08:03



عملت لي - على الرغم من عدم التأكد من سبب اختلاف ذلك عن vim الذي كنت أطرحه سابقًا - Amos Folarin
يجب أن يكون هذا هو الجواب المقبول (ولكن يبدو أن لا أحد يقبل). إنها الطريقة الأبسط / الأنظف للحصول على vim "تحديث" بالكامل إلى وحدة تحكم للكمبيوتر (بدلاً من أطراف Tty / ANSI. - Lockszmith
نعم أتفق معك Lockzsmith ، هذا should'v كان الجواب المقبول - niccolo m.
هذا العمل بالنسبة لي. أنا مندهش من أن raspian يأتي مع نسخة vi / vim أنه يفعل ذلك ... على الرغم من أن كل البرامج التعليمية لذلك أقول لك استخدام نانو ، والتي من الصعب القول بأن vim هو أفضل حقا من ذلك. ربما كان السبب الوحيد لاستخدام فيم بدلا من نانو هو أن vim دائما على كل آلة ويبدو وكأنه فرصة 50/50 سواء كان نانو. - ArtOfWarfare


مع viعند النقر على أنا قمت بتنشيط الأمر ل إدراج نص.
يتيح لك هذا الأمر إدراج نص في ملفك.
والحق ، عند النقر:

  • على  سيتم إدراج "A" ،
  • على  سيتم إدراج "B" ،
  • ...

حتى قمت بإلغاء تنشيط هذا الأمر.
لإلغاء تنشيط أمر في vi : فقط اضغط على زر Esc فى الكيبورد
ومن ثم ستعود إلى الاستخدام العادي لمفاتيح الأسهم الخاصة بك:

  •  لترتفع،
  •  النزول،
  • ...

لمعلوماتك ، وهنا بعض vi أوامر:
من هذا مصدر.

:xإرجاع  ترك السادسكتابة ملف معدل إلى ملف مسمى في الاحتجاج الأصلي
:wqإرجاع  ترك السادسكتابة ملف معدل إلى ملف مسمى في الاحتجاج الأصلي
:qإرجاع  استقال (أو الخروج) السادس
:q!إرجاع  ترك السادس على الرغم من أنه لم يتم حفظ التغييرات الأخيرة لهذه المكالمة vi

  نقل المؤشر لأسفل خط واحد
  نقل المؤشر حتى خط واحد
  نقل ترك المؤشر حرف واحد
  نقل المؤشر الصحيح حرف واحد

u  فك مهما فعلت تبديل بسيط
.  فعل ثانية مهما فعلت

i  إدراج النص قبل المؤشر ، حتى زر Esc فى الكيبورد نجاح
I  إدراج النص في بداية السطر الحالي ، حتى زر Esc فى الكيبورد نجاح
a  ألحق النص بعد المؤشر ، حتى زر Esc فى الكيبورد نجاح
A  ألحق النص إلى نهاية السطر الحالي ، حتى زر Esc فى الكيبورد نجاح
o  افتح ووضع النص في سطر جديد أسفل الخط الحالي ، حتى زر Esc فى الكيبورد نجاح
O  افتح ووضع النص في خط جديد فوق الخط الحالي ، حتى زر Esc فى الكيبورد نجاح

r  يحل محل حرف واحد تحت المؤشر (لا زر Esc فى الكيبورد بحاجة)
cw  يتغيرون الكلمة الحالية بنص جديد ، بدءا من الحرف تحت المؤشر ، حتى زر Esc فى الكيبورد نجاح
x  حذف حرف واحد تحت المؤشر
Nx  حذف الحروف N ، تبدأ بالحرف تحت المؤشر
dw  حذف الكلمة الواحدة تبدأ بالحرف تحت المؤشر
C  يتغيرون (استبدال) الأحرف في السطر الحالي ، حتى زر Esc فى الكيبورد نجاح
D  حذف ما تبقى من الخط ، بدءًا من موضع المؤشر الحالي

dd  حذف خط كامل الحالي
Ndd  حذف خطوط N ، تبدأ بالخط الحالي ؛ على سبيل المثال ، يحذف 5dd 5 أسطر
yy  نسخ (يانك ، وقطع) الخط الحالي في المخزن المؤقت
Nyy  نسخ (يانك ، وقطع) خطوط N المقبلة ، بما في ذلك الخط الحالي ، في المخزن المؤقت
p  معجونالسطر (الخطوط) في المخزن المؤقت في النص بعد السطر الحالي

0 (صفر) نقل المؤشر لبدء الخط الحالي (واحد مع المؤشر)
$  نقل المؤشر حتى نهاية السطر الحالي
w  نقل المؤشر إلى بداية الكلمة التالية
b  نقل المؤشر مرة أخرى إلى بداية الكلمة السابقة
:0إرجاع أو 1G  نقل المؤشر إلى السطر الأول في الملف
:nإرجاع أو nG  نقل المؤشر على خط ن
:$إرجاع أو G  نقل المؤشر إلى السطر الأخير في الملف

/string  بحث إلى الأمام لحدوث سلسلة في النص
?string  بحث إلى الوراء لحدوث سلسلة في النص
n  نقل إلى التكرار التالي لسلسلة البحث
N  نقل إلى التكرار التالي لسلسلة البحث في الاتجاه المعاكس


26
2017-10-05 06:52



مفتاح السهم أسفل إدخال "B" ليس سلوكًا متوقعًا. يجب أن تحرك مفاتيح الأسهم المؤشرات إلى الأعلى والأسفل / اليسار واليمين بغض النظر عن وضع الإدراج. - James Wong
JamesWong في الواقع ، ذلك هو السلوك المتوقع ، وهذا هو كيف تمت برمجة Vi في الأصل. VIM ، (بشكل غير رسمي) الخلف لـ Vi ، في وضع متوافق مع Vi بشكل افتراضي ، والذي يتضمن هذا السلوك لمفاتيح الأسهم. لذا ، فإن كلمة "ينبغي" هنا هي مجرد ذاتية ، حيث إن في آي إم تقوم بالفعل بما كان مبرمجًا أن تفعله. - villapx
villapx - لا ، ليس هذا هو السلوك المتوقع. يتم تحديد السلوك المتوقع بما يتوقعه المستخدم العادي. الشخص العادي الذي يستخدم vi / vim يستخدمه لأن هذا هو ما تم تثبيته على الخادم الذي يحتاج إلى تكوينه بسرعة ولن يقوم بما يكفي لإزعاجه بتثبيت شيء آخر. في الواقع ، يختار عدد قليل من الأشخاص استخدام vim عندما يتم منحهم خيارًا ، وعددًا أقل من ذلك يعرف في الواقع جميع هذه الميزات أو المراوغات. يتوقع المستخدم النموذجي أن تقوم الأسهم بتحريك المؤشر - وهذا هو السلوك المتوقع. أي شيء آخر هو سلوك غير متوقع ، ويجب كتابته على أنه خطأ عن غير متوقع. - ArtOfWarfare
ArtOfWarfare أنت حر في تحديد "المتوقع" ولكنك تختار. أنا أعرّفه كما هو متوقع من كاتب الشفرة ، حيث كان واضحًا تمامًا في دليل VIM كيف من المفترض أن يتصرف ... :help compatible: "افتراضيًا ، يتم تشغيل هذا الخيار ويتم استخدام الإعدادات الافتراضية للخيارات. تم اختيار هذا الإعداد الافتراضي لأولئك الأشخاص الذين يرغبون في استخدام Vim مثل Vi ، ولا حتى (يريدون) معرفة خيار" متوافق " ". - villapx
ArtOfWarfare بشكل أساسي ، كان لمؤلف VIM بوضوح جمهورًا محددًا عند كتابة هذا الجزء من الشفرة ، ولأن هذا الجمهور مختلف عما ك الجمهور ، لا يعني أنه خطأ. يمكنك تقديمه كحشرة إذا كنت ترغب في ذلك ، ولكن كن مستعدًا للتضليل من قبل الأصوليين في في آي في (وفي الحقيقة أي شخص يحترم "الدليل" ، وهو من هواة RTFM). - villapx


لتعطيل طباعة الرسائل على أسهم الضغط في وضع التحرير ، يمكنك القيام باتباعها

vi $HOME/.exrc 

(قم بإنشاء ملف إذا لم يكن موجودًا) ثم أضف السطر set nocompatible لها وحفظها.


16
2017-08-08 12:46



يجب أن يكون هذا هو الجواب المقبول. شكرا لكم! - eis
أضع ذلك في .vimrc. لماذا تضعه في .exrc؟ - pauljohn32
مصادر فيم على حد سواء - انظر الناتج :version لترتيب التحميل (أيضا :h .exrc أو :h init). أفترض أن شخصًا ما قد يريد إعدادًا لتطبيقه في كل من vi و vim ، أو قد يكون مجرد قوة معتادة. - William Robertson


هناك ثلاث طرق في محرر vi وهي:

  • وضع القيادة
  • وضع الإدخال
  • الوضع الافتراضي.

عندما تقوم بفتح ملف ، فأنت في الوضع الافتراضي. الآن إذا كنت ترغب في الذهاب إلى موضع محدد في النص الخاص بك ، فما عليك سوى استخدام مفاتيح الأسهم أو الاستخدام ح، ي، ك، ل مفاتيح. لاحظ أن هذا سيعمل فقط عندما لا تضغط أنا (أو أي إدخال آخر وضع إدخال الأمر مثل ا، ا، أنا).

قد يكون سبب "B" لأن مفاتيح الأسهم في وضع الإدخال لا تعمل كمفاتيح أسهم ، لذلك فقط اضغط على زر Esc فى الكيبورد للذهاب إلى الوضع الافتراضي في أي وقت. عندما تتحول إلى وضع الإدخال اضغط أنا أو ا، وللتنقل فقط اضغط أنا مفتاح واستخدام مفاتيح الأسهم أو ح، ي، ك، ل.


11
2017-11-21 07:14





كان لي نفس المشكلة بالضبط ولكن ليس فقط على الجهاز المحلي الخاص بي ولكن أيضا على الاتصالات عن طريق المعجون على جهاز sles في Win7 VM عبر جهاز استقبال سيتريكس. يظهر كل من المضيف المحلي والمضيف البعيد بعد إعادة تثبيت Ubuntu نفس المشكلة بالضبط.

بعد معرفة ذلك

$ localectl list-keymaps 
Couldn't find any console keymaps.

يسبب هذا السلوك السادس الغريب الذي قمت بتثبيته على بيانات وحدة التحكم التي تحل المشكلة!

sudo apt-get install console-data

6
2018-01-18 10:53





كل التفسيرات المقدمة غريبة بعض الشيء. لدي vi ولكن لم يتم تثبيت vim.

التحقق من البدائل: /etc/alternatives/vi &السهم الأيمن /usr/bin/vim.tiny

وبالتالي vi هو vim.tiny، ويستخدم /etc/vim/vimrc.tiny.

و في vimrc.tiny تجد السطر التالي:

set compatible

وهو الشيء الوحيد تقريبا في هذا الملف. لاحظ أنه في /etc/vim/vimrc إنها تستخدم nocompatible.

لذلك إما تثبيت vim ، أو تغيير vimrc.tiny أو إنشاء ملف خاص بك ~/.vimrc والتي يجب أن تحتوي على الخط:

set nocompatible

3
2018-01-10 22:11



لست متأكدا ما هو غريب جدا. ينتهي الأمر بك مما يشير إلى 1. تثبيت Vim - askubuntu.com/a/220072/1584422. خلق ~/.vimrc والإعداد nocompatible: askubuntu.com/a/353944/158442، أو 3. تحرير ملف النظام. فقط اقتراح لتحرير /etc/vim/vimrc.tiny هو جديد ، ومع ذلك يمكنك استدعاء إجابات غريبة أثناء اقتراح نفس الشيء. - muru


ملحوظة:

هناك معلومات جيدة في المشاركات الأخرى ولكن لم تحاول أي من المشاركات شرحها لماذا ا حدث هذا السلوك. كثير من الناس ملزمون بالتعثر على هذا في المستقبل. هل يمكنك أيضًا تمييز هذا السؤال على أنه حل لأن أيًا من المشاركات السابقة ساعدك على الأرجح؟


هنا تفسير:

السادس هو محرر تم منذ فترة طويلة ، مع العودة إلى أنظمة يونكس. إنها أداة جيدة ولكن تم تكرارها والآن هناك أفضل. همة وقد كتب في وقت لاحق وهذا التكرار. يشير الناس عادة إلى vi كـ "vim-minimal" و vim هو نسخة "محسنة" من vi. يمكنك التفكير في الأمر على النحو التالي: vi هو جوهر و vim يتوسع عليه.

على الأرجح كيف اكتشفت السلوك:

من أجل اكتشاف هذه المشكلة ، قمت بالضغط على "أنا" للادخال إدراج ثم استخدم مفاتيح الأسهم الخاصة بك للتنقل في الخط الصحيح ونقطة التحرير. هذا هو سبب مشكلتك غير المتوقعة.

الحل 1 أو 2

1) vi someFile أثناء استخدام السادس، انتقل أولا إلى نقطة تحرير ، ثم أدخل في وضع الإدراج.

2) vim someFile ببساطة استخدام همة من البداية.

لا أستطيع أن أؤكد ما يكفي لقراءة الدليل (صفحات رجل) أو لاستخدام -h للحصول على مساعدة. بمجرد أن تتكيف مع الأنماط الموجودة في الهيكل ، تصبح الصفحات البشرية أفضل صديق لك. مثال: man vi أو man vim


تحقق من تثبيت Vim.

افتح نافذة وحدة التحكم وتنفيذ:

dpkg --list | grep vim

إذا حصلت على شيء مشابه لهذا ، فيمكنك فقط البدء باستخدام vim.

~ $ dpkg --list | grep vim
ii  vim         2:7.4.052-1ubuntu3  amd64  Vi IMproved - enhanced vi editor
ii  vim-common  2:7.4.052-1ubuntu3  amd64  Vi IMproved - Common files
ii  vim-runtime 2:7.4.052-1ubuntu3  all    Vi IMproved - Runtime files
ii  vim-tiny    2:7.4.052-1ubuntu3  amd64  Vi IMproved - enhanced vi editor - compact version

إذا عاد موجه الأوامر بدون أي شيء ، فهذا يعني أن vim غير مثبت. استخدم الأمثلة أدناه لتحديث المستودعات الخاصة بك ثم قم بتثبيت vim.

sudo apt-get update
sudo apt-get install vim

على فرصة أن تستخدم vi أو vim فقط عند البحث على الإنترنت عن كيفية إصلاح شيء ما وتنسى الكتابة vim، هناك طريقة واحدة يمكنك إصلاحها للمستقبل. أحذرك من الاهتمام. يمكنك استخدام اسم مستعار لكتابة vi مع الإشارة إلى vim بحيث لا يهم ما تكتبه في المستقبل غير المتكرر ، تحصل على vim بدون هذا "oops!" لحظة. يمكنك دائمًا حذف اسم مستعار في وقت لاحق.

اكتب vim .bashrc. الانتقال لأسفل إلى السطر الفارغ فقط ~ (أو إلى أي خط آخر يبدأ بـ alias (لذلك يتم تجميعهم معًا) ثم الضغط على أنا مفتاح للدخول في وضع -insert-. على سطر منفصل خاص به ، أدخل ما يلي:

alias vi='vim'

صحافة Esc ثم اكتب :wq. الآن تحتاج إلى إعادة تحميل الملف. اكتب source .bashrc أي shell آخر يتم فتحه بعد إجراء هذه التعديلات ، سيقوم تلقائيًا بتحميل ملف .bashrc.


2
2017-10-30 04:20





لا يتعرف محرر vi التقليدي على مفاتيح الأسهم (... afair). هناك حلان:

  1. استخدم vim بدلاً من vi
  2. استخدم h و j و k و l للتنقل (لا يمكنك التنقل أثناء التحرير على القيمة التقليدية vi btw.)

1
2017-10-05 05:51



هذا ليس صحيح ابحث عن terminfo / termcap والتطبيقات المستندة إلى libcurses. أستخدم vi منذ عام 1990 في Xenix ، و SCO Unix ، و AIX ، و hpux القديم ، وغير ذلك ، ونقية vi من الثمانينيات ، فلديها بالفعل دعم لتطبيقات terminfo / termcap. - Luciano
@ جيمس وونغ جيدا ثم يجب أن أعيد صياغة جوابي. ل "نقي vi تحت أوبونتو لا ..." - MadMike
... وكان هذا يعني كتعليق علىluciano - MadMike


هذا يمكن ان يكون ايضا بسبب TERM متغير؛ ضعها على سبيل المثال مثل:

 export TERM=xterm

1
2017-07-07 13:54



هذا حل المشكلة بالنسبة لي حيث لا إجابات أخرى. شكر! - greg