Vim: более быстрый способ выделения блоков текста в визуальном режиме - PullRequest
173 голосов
/ 13 сентября 2011

Я уже давно пользуюсь vim и знаю, что выбрать блоки текста в визуальном режиме так же просто, как SHIFT + V и переместить клавишу со стрелкой вверх или вниз построчно, пока я не достигну конца блока текста, который я хочу выделить.

У меня вопрос - есть ли более быстрый способ в визуальном режиме выбрать блок текста, например, SHIFT + V с последующим указанием номера строки, в которой я хочу выбор остановить? (например, через :35, где 35 - номер строки, которую я хочу выбрать - это, очевидно, не работает, поэтому мой вопрос - как можно сделать что-то похожее на это ...)

Ответы [ 14 ]

191 голосов
/ 13 сентября 2011

В дополнение к тому, что сказали другие, вы также можете расширить свой выбор с помощью поиска по шаблону.

Например, v / f o o будет выбирать из вашей текущей позиции следующую экземпляр "фу". Если вы действительно хотите расширить до следующий экземпляр «foo», например, в строке 35, просто нажмите n , чтобы расширить выбор до следующего экземпляра и т. Д.

обновление

Я не часто так делаю, но я знаю, что некоторые люди широко используют метки для визуального выбора. Например, если я в строке 5 и хочу выбрать строку 35, я мог бы нажать m a , чтобы поставить отметку a в строке 5, а затем : 3 5 для перехода к строке 35. Shift + v для входа в аналогичный визуальный режим и, наконец, ` a для возврата к отметке a.

105 голосов
/ 13 сентября 2011
G                       Goto line [count], default last line, on the first
                        non-blank character linewise.  If 'startofline' not
                        set, keep the same column.
                        G is a one of jump-motions.

V35G достигает того, что вы хотите

79 голосов
/ 01 июня 2013

Vim - это язык.Чтобы по-настоящему понять Vim, вы должны знать язык.Многие команды являются глаголами, и у vim также есть объекты и предлоги.

V100G
V100gg

Это означает «выбрать текущую строку до 100 включительно и включительно».

В текстовых объектах многосила в.Они вводят больше объектов с предлогами.

Vap

Это означает «выделение вокруг текущего абзаца», то есть выделение текущего абзаца и пустой строки после него.

V2ap

Это означает«Выбрать вокруг текущего абзаца и следующего абзаца.»

}V-2ap

Это означает «перейти к концу текущего абзаца, а затем визуально выделить его и предыдущий абзац.»

ПониманиеVim как язык поможет вам получить максимальную отдачу от него.

После выбора вниз вы можете комбинировать его с другими командами:

Vapd

С помощью приведенной выше команды:Вы можете выделить вокруг абзаца и удалить его.Измените d на y для копирования или c для изменения или p для вставки.

Как только вы поймете, как все эти команды работают вместе, тогдав конечном итоге вам не нужно ничего визуально выбирать.Вместо того, чтобы визуально выбирать, а затем удалять абзац, вы можете просто удалить абзац с помощью команды dap.

37 голосов
/ 13 сентября 2011

v35G выберет все от курсора до строки 35.

v переводит вас в режим выбора, 35 указывает номер строки, на которую вы хотите G перейти.

Вы также можете использовать v}, который будет выбирать все до начала следующего абзаца.

14 голосов
/ 13 сентября 2011

Для выбора количества строк:

shift + v 9j - выберите 10 строк

7 голосов
/ 17 февраля 2016

Shift+V n j или Shift+V n k

Выбирает текущую и следующую / предыдущие n строки.Я нахожу это очень полезным.

6 голосов
/ 13 сентября 2011

v 35 j

текст добавлен не менее 30 символов

4 голосов
/ 13 сентября 2011
3 голосов
/ 19 мая 2015

Вы всегда можете просто использовать номера предшествующих для повторения действий:

  • В визуальном режиме введите 3 5 & downarrow; , и курсор переместится вниз 35 раз, выбрав следующие 35 строк
  • В обычном режиме:
    • удалить 35 строк 3 5 d d
    • вставить 35 раз 3 5 p
    • отменить 35 изменений 3 5 u
    • и т.д.
3 голосов
/ 16 сентября 2014

v%

выберет весь блок.

Играть также с:

v}, vp, vs и т. Д.

См. Справку:

:help text-objects

в котором перечислены различные способы выбора букв, слов, предложений, абзацев, блоков и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...