Довольно распространенная для меня операция в vim, так как я навязчиво навязчив и не хочу, чтобы мои файлы были свободными от пробелов, состоит в удалении содержимого всей строки, но не самой строки (то есть не прерывания строки).
Есть ли встроенный способ vim сделать это? Возможно d<movement command>
операция?
Пока что лучшее, что у меня есть (по рассматриваемой линии) 0d$. Есть ли более быстрый способ?
key-bindings
cursor-movement
Эндрю Ферье
источник
источник
:%s/\s*$//
Ответы:
Вы можете использовать
0D
это, чтобы перейти к первому символу в строке и удалить до конца строки. Обратите внимание, что вы можете использовать,^D
если вы хотите оставить все предыдущие пробелы в покое. Кроме того, эти операции не могут быть повторены с помощью.
. Если вы хотите выполнить операцию, которую можно повторить с помощью.
команды, обратитесь к ответу Дэвида Лорда.Разделы помощи:
:help 0
:help D
:help ^
источник
.
команды. По этой причине, я думаюcc<Esc>
илиS<Esc>
более привлекательным, если вы хотите повторить..
..
. Они работают так, как если бы эти комбинации клавиш вводились в интерактивном режиме, поэтому отдельные команды обрабатываются отдельно. Использование.
повторит только последнюю команду в макросе.@{reg}
, вы можете повторить его.
позже.D
. После0D
операции ваш курсор останется в столбце 0. Если ваш курсор уже находится в начале строки (после перехода к другой), он будет выглядеть так, как будто макрос был правильно повторен. Попробуйте переместить курсор вперед в строке и наберите.
- вы увидите, что он только повторяетсяD
.cc <Esc>
будет делать, как вы просите, но больше нажатий клавиш, чем0D
. Если вы хотите поместить что-то в эту строку впоследствии,cc
может быть лучше.источник
.
команды. В отличие от0D
(как предлагается в выбранном ответе) два действия:0
движение иD
команда.0D
для меня, так как яjk
нанес на карту<Esc>
в свой vimrc, так что мои руки даже не должны были выходить из домашнего ряда.S
задокументировано как «Синонимcc
»S
а затемCtrl+C
или,Esc
кажется, выполняет ту же функцию.Затем его можно повторить,
.
поскольку оно представляет собой одно действие.источник
0D
это, вероятно, то, что вы хотите. Он будет удален от курсора до конца строки, оставляя строку (и любые символы перед курсором) на месте.источник
0D
удалит с начала строки , а не с позиции курсораЯ обычно использую
ddO
.dd
удалить текущую строку иO
(это заглавная буква o) добавить новую строку.Это также 3 нажатия клавиш, но
dd
считается только 1 с половиной, и я считаю,O
легче набрать, чем$
.Он отличается от
0D
решения тем, что выполняет автоиндентирование, например, с помощью этого кода (где!···
находится вкладка и █ курсор:0D
оставит вас с:И
ddO
оставит вас с:И если вы нажмете
<Esc>
сразу после этого, Vim должен удалить авто-отступ, так что вы получите то же самое, что и с0D
.Не существует «правильного» способа, это будет зависеть от того, что именно вы хотите сделать. Я предпочитаю,
ddO
потому что это более гибко, и потому что это "в моих пальцах" :-)источник
^D
оставит пробел в покое.O
оставляет вас в режиме вставки, это эквивалентноcc
, кроме как без авто-отступа .... если ваша строка уже не была автоматически с отступом.И чтобы сохранить этот драгоценный ход, который вы можете использовать,
0C
вы удалите все символы в текущей строке и переведете вас в режим вставки.источник