11

Я думаю, что это позволило бы функции визуального выбора vim превзойти эффективность даже мыши, предоставляя возможность "переключать" текущую конечную точку выбора:

Иллюстрированный (| должен представлять курсор (Vim должен работать с левой стороны от символа, на котором он включен), а [text] представляет выделенный текст, только притвориться, что он занимает нулевую ширину). Фон пространства между [ ] выглядит серым, а символ сразу после | зеленый):

Начать с

Some |text here
Some second line of text
Some more text in the third line 

Нажмите v2j ; Обратите внимание, что символ m включен в выделение (теперь он выделен курсором):

Some [text here
Some second line of text
Some |m]ore text in the third line 

Пресс 10l:

Some [text here
Some second line of text
Some more text |i]n the third line 

Именно в этот момент я могу решить, что хочу начать выбирать из другого места. например, включая "Some" в первой строке.

У меня нет выбора в типичном редакторе /IDE. Мне, вероятно, пришлось бы подвести руку к мышке, обычно слишком больно выделять текст традиционными методами, использование переключения слов через Ctrl и page-up /down несколько помогает, но, несмотря ни на что, я должен передайте один из моих завершающих пунктов выбора, прежде чем я начну выбор.

Поэтому в Vim я хотел бы получить возможность взять мое текущее состояние и довести его до этого, нажав тайну:

Some [|text here
Some second line of text
Some more text i]n the third line 

Затем я могу просто нажать ^ или <Home> (оба делают то же самое в этом случае, когда нет пробела), чтобы превратить его в

[|Some text here
Some second line of text
Some more text i]n the third line 

Скажем, я снова передумал, я хочу настроить другой конец!

[Some text here
Some second line of text
Some more text |i]n the third line 

Хит e:

[Some text here
Some second line of text
Some more text i|n] the third line 

Красивая! Теперь я могу делать все, что захочу, с этим выбором.

Так что же это за загадка?

Кроме того, еще более потенциально эффективным будет набор альтернативных привязок для некоторых из наиболее часто используемых команд перемещения к другому ряду клавиш, и они (в визуальном режиме) будут всегда перемещать другой конец выделения. Таким образом, в этой операции выбора визуального режима, если бы клавиши перемещения для другого конца выделения были установлены на "yuio" (вероятно, не лучший выбор, так как нам нужно y но просто потерпите меня), мы могли бы набрать

v2j10l5ye

скорее, чем

v2j10lX^Xe

Эй, ты знаешь что, это даже не так уж много улучшения. Просто дай мне эту особенность X. :)

Идеальные ответы, которые я ищу:

  • Эй, посмотрите вверх :help some_awesome_vim_feature_that_just_does_this
  • Эй, посмотрите на https://github.com/awesome_user/vim_plugin_that_does_this
  • Эй, посмотрите на :help vimscript_functions_that_allow_mutation_of_visual_selections

Я довольно новичок в этом увлечении Vim, поэтому я очень зеленый, когда дело доходит до Vimscript, и, честно говоря, я бы хотел избежать попыток выучить еще один язык, так что, надеюсь, я не буду вынужден строить это как плагин.

1 ответ1

43

Я не уверен, что на самом деле понимаю, чего вы хотите, но, возможно, именно это:

:help v_o

В основном, когда текст визуально выделен, вы можете нажать o, и он перейдет к другому "концу" визуальной области, не изменяя его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .