غير قادر على الحصول على VIM مثل CW F FON SCREEN DOPLE-MODE
-
23-08-2019 - |
سؤال
أريد فتح مسار إلى VIM من وضع نسخ الشاشة بواسطة
Ctrl-A f
وبالمثل ما يمكنني فتح ملفات خارجية في VIM بواسطة
Ctrl-W f
كيف يمكنك فتح مسار في VIM في وضع نسخ الشاشة؟
--- شكرا لك على Samuil للحصول على خطوة كروك
دعونا نفترض الماوس في المسار / الملف في التعليمات البرمجية التالية التي تمثل العرض عند تشغيل الشاشة
text[space]PATH/file[space]text
أنا اضغط ^ a f في المسار / الملف. يجب أن يوفر مسار الملف إلى / tmp / screencopyfile بحيث يمكننا استخدامها cat
في الأمر التالي الذي ^A f
يجب أن تبدأ:
^A: exec vim `cat PATH/file`
لقد قمت بتشغيل الأمر يدويا دون جدوى. لم توسع الأمر CAT، لكنه يفتح ملف يسمى القط.
وبعبارة أخرى، نريد أن نجعل الرسالة f
تمثل
exec vim `cat /tmp/screenCopyFile`
عن طريق ربط في .Screenrc.
شكرا لك من أجل إجابتك!
المحلول
حسنا، إليك حلا:
وضع ما يلي في /path/to/edit-file-under-cursor.screen
:
# edit-file-under-cursor.screen
# prevent messages from slowing this down
msgminwait 0
# copy path starting at cursor
stuff " Ebe "
# write the path to a file
writebuf /tmp/screen-copied-path
# open that file in vim in a new screen window
screen /bin/sh -c 'vim `cat /tmp/screen-copied-path`'
# turn message waiting back on
msgminwait 1
# vi: ft=screen
ثم أضف هذا الخط إلى .screenrc
:
# bind CTRL-f to open the file starting at the cursor
# when in copy mode
bindkey -m ^f source /path/to/edit-file-under-cursor.screen
(تغيير /path/to/
بشكل مناسب)
ثم، للاستخدام، تأكد من إعادة التشغيل screen
(أو إعادة تحميل .screenrc
). أدخل وضع النسخ مع ^A[
, ، المؤشر إلى الطابع الأول من اسم الملف، ثم ضرب CTRL-f
.
لقد اختبرت هذا، ويعمل من أجلي، أخبرني إذا كان لديك أي مشاكل.
إذا كنت تريد أن ترى كيف أعرف كيفية القيام بذلك، تحقق man screen
لمعرفة كيف تعمل جميع الأوامر المختلفة.
هناك تحسن واحد يمكن أن يتمكن من العثور على بداية المسار، لكنني لم أستطع القيام بذلك بشكل موثوق بأوامر حركة وضع نسخ الشاشة فقط (مثل أي شيء تم نقله إلى الأول /
من "/a/path
"انتقل إلى |
من "|/a/path
")
هذا يرجع إلى حدود screen
أوامر الحركة في وضع النسخ:
مفاتيح الحركة: H، J، K، L لنقل خط المؤشر حسب الخط أو العمود حسب العمود. 0، ^ و $ الانتقال إلى أقصى أعمدة، إلى أول شخص آخر أو آخر حرف غير بيضاء على السطر. H، M و L لنقل المؤشر إلى أقصى أعمدة من الجزء العلوي أو مركز أو أسفل النافذة. + و - وظائف خط واحد لأعلى ولأسفل. يتحرك G إلى الخط المطلق المحدد (الافتراضي: نهاية المخزن المؤقت). | يتحرك إلى العمود المطلق المحدد. W، B، E حرك كلمة المؤشر بالكلمة. ب، ه نقل كلمة المؤشر عن طريق كلمة (كما هو الحال في السادس). قم بتمرير CU و CD العرض لأعلى / لأسفل حسب الكمية المحددة من الخطوط مع الحفاظ على موضع المؤشر. (الافتراضي: نصف شاشة كاملة). CB و CF قم بتمرير العرض لأعلى على الشاشة G يتحرك إلى بداية المخزن المؤقت. يقفز٪ إلى النسبة المئوية المحددة من المخزن المؤقت....البحث عن: / السادس مثل البحث إلى الأمام. ب VI - البحث عن الوراء إلى الوراء. CA S EMACS Style البحث الإضافي للأمام. CR EMACS نمط عكس i-بحث.
لذلك إذا غيرنا stuff
خط أعلاه
stuff "Bw Ebe "
سوف ينتقل إلى بداية المسار، لكنه سيتضمن أيضا أي خردة غير بيضاء جاء قبل المسار. طالما طالما أن جميع مساراتك محددة (على كلا الجانبين) يجب أن يعمل هذا.
فعلا
stuff "B//^M E?/^Me "
يبدو أن يعمل بشكل جيد إلى حد ما، لأن هذا يستخدم البحث عن العثور على الأول والأخير /
(اكتب ال ^M
في VIM عن طريق ضرب Ctrl-V، ثم أدخل). لم أختبر كل حالات الحافة، ولكن يبدو أن العمل من أجل:
/ A / المسار # / A / PATH / A / PATH #
ومع ذلك، سوف تفشل في
أ / نسبي / المسار
نصائح أخرى
أنا لا أعرف vim جيدة جدا، ولكن مع عدد قليل من الأوامر يجب أن يتم بسهولة. عندما يكون لديك بالفعل اسم ملف في pastebuffer الخاص بك، يمكنك استخدام هذه الأوامر المفيدة:
^A : writebuf /tmp/.screenpomfile
^A : exec vim parameters
أنا لا أعرف كيفية صنع vim
قراءة اسم الملف من الملف (أعتقد أنه من الممكن)، ولكن يمكنك ذلك :exec
البرنامج النصي الخاص بك مكتوبة في قذيفة قادرة على تحليل `expr
`التعبيرات:
#!/bin/sh
vim `cat /tmp/.screenpomfile`
في وقت لاحق يمكنك ربط مفاتيحك الخاصة بهذه الإجراءات، واستخدامها بشكل فعال تماما.