Очистить строку быстрее, чем [0] [d] [$]

18

Есть ли более быстрый способ стереть текст в строке, чем

  • нажмите, 0чтобы перейти к началу, затем
  • нажатием d$удалить до конца строки?

Кроме того, что если я захочу удалить все, кроме отступа? Есть способ сделать это?

Робби Wxyz
источник

Ответы:

34

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

  1. dd удалит текущую строку (не ясно)
  2. 0D очистит текущую строку, включая пробелы
  3. ^Dочистит текущую строку, не включая пробелы ( ^dg_экономит конечный пробел)
  4. 0C очистит текущую строку, включая пробелы, и переведет вас в режим вставки
  5. ^Cочистит текущую строку без пробелов и переведет вас в режим вставки ( ^cg_экономит конечный пробел)

ccили Sбудет работать как 4. или 5., если 'autoindent' выключен или включен соответственно.

Поэтому используйте все, что подходит под действие. Я считаю, что 0Dэто самый быстрый способ очистить линию, но вы можете сопоставить это с чем-то, если хотите, чтобы сделать это еще быстрее.

Акшай
источник
7
@SuperScript Sявляется синонимомcc
FDinoff
1
Спасибо за отличный ответ, @akshay; TYLTK - это самое лучшее: vi.stackexchange.com/…
Робби Wxyz
9

Ага. Если есть что-то, что мне нравится в Vim, так это ответ на вопрос «Могу ли я сделать это?» почти всегда решительное да .

0D Переходит к началу, затем удаляет через конец строки.

^D (не Ctrl + D) перейдет к первому непробельному символу, а затем удалит его до конца.

(PS Я понял это только сейчас и хотел поделиться с любыми другими новичками. Пожалуйста, дайте мне знать, если есть лучший способ.)

Робби Wxyz
источник
6

Очистить строку с одним ключом (сдвинуты): S.

Это также держит отступ.

Вы переходите в режим вставки в первой позиции после отступа или в начале строки - именно то, что вам нужно, чтобы заменить строку - следовательно, имя S- как замена.

:help S

["x]S   Delete [count] lines [into register x] and start
        insert.  Synonym for "cc" |linewise|.

["x]cc  Delete [count] lines [into register x] and start
        insert |linewise|.  If 'autoindent' is on, preserve
        the indent of the first line.
Volker Siegel
источник
Sэто отличный ключ.
domi91c
3

С помощью плагина Kana " vim-textobj-line " вы можете использовать операции над строкой с отступом с il(например dil) или со всей строкой без перевода строки, с al(например yal). Преимуществом этого подхода является тонким: вместо того, чтобы думать о двух движений (начало, конец) для требуемой операции необходимо указать текстовый объект непосредственно : я п л НСИ, а л НСИ.

VanLaser
источник