Vim: Выберите прямоугольный блок за концом строки - PullRequest
0 голосов
/ 20 декабря 2018

Как выбрать прямоугольный блок текста, который выходит за конец строки в Vim?

Предположим, у меня есть

aa
bbb
cc
dddd
ee

. Я хотел бы выбрать прямоугольный блок, который расширяет четыре символа во всех строках.Если _ считается пробелом, то я хочу:

aa__
bbb_
cc__
dddd
ee__

Прямоугольный визуальный блок C-v простирается только до конца последней выбранной строки:

rectangular select which extends beyond the end of the line

В Emacs я могу делать то, что хочу, используя C-x <SPC> (rectangle-mark-mode).;)

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Использование подстановки

:%s,^..$,&__,g | %s,^...$,&_,g

: ............ command
% ............ whole file
^ ............ begining of line
.. ........... two characters
$ ............ end of line
& ............ the whole search pattern
__ ........... (plus) the chars we want
g ............ globally
| ............ another command (this time for 3 chars)
0 голосов
/ 21 декабря 2018

блочный визуальный режим с рваной рамкой

Чтобы расширить блочный визуальный выбор до конца всех покрытых линий, вы можете нажать $, чтобы переключить Vim в режим выбора «рваной границы».Этот «трюк» упоминается в :help v_b_A:

При выделении по блокам A {string} будет добавлять {string} в конец блока в каждой строкеблок.Существует несколько разное поведение, когда блок RHS не является прямым из-за разной длины строки:

  1. Блок был создан с помощью $. В этом случае строка добавляется в конец каждой строки.
  2. Блок был создан с помощью {move -round}. В этом случае строка добавляется в конец блока в каждой строке, а пробел вставляется для заполнения столбца конца блока.

виртуальное редактирование

Еще один способ решить эту проблему - опция 'virtualedit':

:set virtualedit=all

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

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