هل من الممكن تحديد الكائنات الهيردوك أو "وثيقة هنا" مع VIM؟

StackOverflow https://stackoverflow.com/questions/2343906

  •  23-09-2019
  •  | 
  •  

سؤال

واحدة من نقاط القوة العظيمة لـ VIM هي كائن الاختيار, ، تقديم التلاعب السريع للمحتوى داخل الكلمات والفقرات والرقم المتنوع.

علي سبيل المثال،

vi{

سيختار كل شيء داخل زوج من الأقواس {}.

هل هناك أي وظيفة مكافئة لاختيار أ وثيقة هنا أو هيريدوك:

<<<HTML
    ....
    ....
HTML;

استنادًا إلى إجابة Erichbschulz ، توصلت إلى ما يلي لاختيار Heredoc Inner:

nmap <F6> ?<<<<CR>w*kV?<<<<CR>j

?<<<<CR>w    " find beginning tag (after <<<)
*k           " find matching end tag and go up 1 line
V            " enter visual mode
?<<<<CR>j    " find beginning tag and go down 1 line
هل كانت مفيدة؟

المحلول

التفكير في المشاركات السابقة ومحاولة أخذهم خطوة أقرب. لن يكون هذا موثوقًا بنسبة 100 ٪ (أي سوف ينهار إذا حدثت علامة البدء داخل Heredoc ولكن شيء مثل:

?<<< "find begining
w    " go to starting tag
*    " find starting tag
v    " enter visual mode (could use Upper V to do an 'ambientish' object select 
n    " find end tag
e    " optional include end tag

تحرير: لقد قام كين بتحسين التسلسل على النحو الوارد أعلاه ، لذلك أقترح عليك استخدام رسم خرائط مفتاح أفضل لـ "inner" heredoc select:

nmap <F6> ?<<<<CR>w*kV?<<<<CR>j

(يعتمد هذا على Heredocs على نمط PHP)

نصائح أخرى

لاختيار Heredoc ، عادةً ما أضع المؤشر في السطر الأول ، فوق معرف Heredoc و اضغط الخامس*

الخامس سيبدأ اختيار الخط ، و * سيبدأ البحث ، والذهاب إلى المباراة التالية من المعرف ، نهاية Heredoc ...

أ <<'' Heredoc الذي تم إنهائه بخط فارغ سهل ، إذا كنت بالفعل في البداية (?<<^M^M): v} يختار من هنا حتى الخط الفارغ.

خلاف ذلك ، في مثالك ، أفضل ما يمكنني التفكير فيه v/^HTML.

هناك هذا البرنامج المساعد الذي يتيح لك تحديد كائنات النص الخاصة بك.

http://www.vim.org/scripts/script.php؟script_id=2100

أتصور أنه سيكون من الجيد تحديد أحدهم حتى تتمكن من قول "yih" (yank in Heredoc) حتى لا تضطر إلى الذهاب صراحة إلى البداية.

لاحظ أنني لم أخدع هذا بنفسي.

إذا كنت تريد فقط اختيار مرئي يمكنك.

 nnoremap <leader>ih ?HTML<cr>V/HTML<cr>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top