Удаление до начала строки - d0 оставляет дополнительное место - PullRequest
1 голос
/ 17 апреля 2020

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

Случай использования часто Я хочу вставить пустую строку между двумя строками, и да, я мог бы использовать 'o' или 'O' и 'Es c', но часто я по привычке входил в режим вставки и вводил строку. autoindent в vim добавляет строку с дополнительным пробелом (даже с smartindent), поэтому у меня остается некоторое висячее пространство, которое я должен удалить с помощью 'd0x'.

Дополнительный 'x' кажется неловким, учитывая, что «D» удаляет до конца строки, не оставляя лишнего пробела, и да, я мог бы использовать «0D», чтобы сделать то же самое с одним меньшим ударом. Но я хотел бы узнать ваше мнение о том, как лучше всего подойти к этой ситуации. Спасибо.

Example

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Обращаясь к самому конкретному c пункту, почему d0 оставляет дополнительный пробел: движение 0 является движением эксклюзивный , что означает последний символ в направлении конец области исключается из операции.

Вы можете использовать модификатор v для переключения символьного движения и включения его:

dv0

Это должен удалить все символы в начале строки, включая один под курсором.

1 голос
/ 17 апреля 2020

Если есть какая-то сложная вещь, которую вы хотите сделать в vim с минимальными нажатиями клавиш, обычный подход состоит в том, чтобы просто создать для него макрос и привязать этот макрос к определенной c последовательности клавиш.

Например, для вашего случая использования вставки пустой строки с отступом, вы можете просто привязать к O<ESC>0D (или любой другой последовательности клавиш, которая вам нужна). Вы можете проверить это нажатием клавиш (в обычном режиме, и <ESC> - это одно нажатие клавиши ES C, а не пяти отдельных символов):

qdO<ESC>0Dq

Затем просто go в какой-то строке вашего файла введите @d и, вуаля, пустую строку без отступов.

Чтобы сделать это постоянным, просто добавьте его в файл vimrc:

let @d='O<ESC>0D'

где, если вы редактируете его с помощью vim, ES C можно ввести как CTRL-V ES C.


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

:g/[ <TAB>]\+$/s///

, либо запустите сценарий для всех файлов чтобы исправить это в пакетной операции (даже лучше, если это делается в рамках автоматических c предварительных проверок перед фиксацией исходного кода), например:

find . -name *.cpp -exec sed -iE 's/[ \t]+$//' {} \;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...