Отрегулируйте другой конец визуального выделения

14

Я думаю, что это позволило бы функции визуального выбора 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, и, честно говоря, я бы хотел избежать попыток выучить еще один язык, так что, надеюсь, я не буду вынужден строить это как плагин.

Стивен Лу
источник
Ладно. Сейчас я не знаю, что здесь происходит (вопрос загадочным образом перенесен ниндзя с SO на SU), но я первоначально разместил это на SO, и я действительно предпочел бы, чтобы он там оставался. При всем уважении к непрограммистам, только программисты могли когда - либо заботиться столько о редактировании текста. Конечно, все пользователи vim могли бы извлечь выгоду из изучения того, как это может работать, я просто думаю, что у него будет больше глазного яблока и больше шансов получить ответ там, где находятся разработчики плагинов.
Стивен Лу
Вы иногда читаете :help? :help visual-modeимеет всю необходимую информацию о визуальном режиме, в том числе o.
Ромен
Я иногда читаю это, но, вероятно, это заняло бы примерно столько же времени, что и мои мысли. Это более определенная задача, чем угадывание строки помощи.
Стивен Лу
Учиться лучше, чем гадать. Ответ Гептита учил вас двум вещам, вы можете назвать их?
Ромен
Да, я имею в виду, что нужно многому научиться, но я уже забыл, что Oделает заглавная буква О, но я запомню o. Второе, на что вы ссылаетесь, это, вероятно, использовать :helpбольше. И я использовал это больше, чем когда я начал.
Стивен Лу

Ответы:

49

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

:help v_o

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

Heptite
источник
2
Святое дерьмо, да !!! Это даже лучше, чем я ожидал, оно уже связано с одним ключом , так Xчто на самом деле вышеo
Стивен Лу
1
Позвольте мне также указать, что щелчок правой кнопкой мыши (если у вас настроен терминал для передачи его в Vim) разумно позволит ему настроить ближайший конец текущего визуального выбора в соответствии с положением курсора. Это делает его гораздо менее болезненным методом для настройки области выделения, поскольку он не выбрасывает местоположение противоположного конца выделения.
Стивен Лу
@StevenLu: Это все равно не выброшено. Вы можете нажать oснова и вернуться.
Гептит
@StevenLu Это, вероятно, должен быть принятый ответ, учитывая, что он не только решил вашу проблему, имеет массу голосов, также произошел именно то, что мне было нужно в первом результате Google, и на самом деле это единственный ответ, представленный кем-либо ...
Кингдон
Да, я думаю, что я никогда не принимал его, потому что он был опубликован так быстро, что мне не было разрешено делать это в то время, и я с удовольствием пользуюсь этой функцией Vim почти пять лет с тех пор, никогда не нужно напоминать себе, что Ключ, как это легко запомнить.
Стивен Лу