Как разбить строки перед одним столбцом? - PullRequest
3 голосов
/ 11 октября 2011

Я хочу вставить return перед одним столбцом из нескольких строк, поэтому я выбираю символы этого столбца с помощью Ctrl + V в обычном режиме, затем набираю I, Vimвходит в режим вставки.После ввода Введите клавишу и нажмите клавишу Esc , разрывается только одна строка.Есть ли способ выполнить эту функцию?Благодаря.

Ответы [ 3 ]

6 голосов
/ 11 октября 2011

Чтобы разбить строки непосредственно перед определенным столбцом, используйте \%v Атом шаблона поиска. это соответствует в данной позиции с нулевой шириной (см. :help /\%v). В следующем примере команда вставляет символ новой строки между седьмым и восьмой столбец.

:%s/\%8v/\r/

Эта идея может быть расширена, чтобы использовать номер столбца, где курсор в настоящее время находится.

:exe'%s/\%'.virtcol('.').'v/\r/'

Приведенные выше команды не требуют выбора ни одного из этих столбцов. Однако, если вам проще указать столбец разделения с Визуальный режим, используйте \%V сопоставление атомов нулевой ширины внутри выделенной области (см. :help \%V).

:'<,'>s/\%V/\r/
1 голос
/ 11 октября 2011

быстрое и грязное решение - сначала вставьте символ, которого нет в столбце (скажем, #), затем gv, затем '<,'>s/#/\r/g.

будет рад, если кто-нибудь предоставит более умное решение.

0 голосов
/ 11 октября 2011

После выбора нужных строк разбить на третий столбец:

:'<,'>g/./norm! 3|a^M

(^M вставляется нажатием <c-v><CR> или <c-q><CR>)

, аналогично ответу Найдите каждое третье значение и вставьте cr или символ новой строки в VIM

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