Есть ли способ удалить что-то в Vim, не перемещая это в реестр?

5

Часто я хочу удалить что-то в Vim, не перемещая его в реестр. Есть ли способ сделать это? Я считаю, что необходимость явно указывать регистр "aиногда немного.

Эван Кэрролл
источник

Ответы:

6

Похоже, что вы на самом деле задаете два связанных вопроса здесь:

  1. Вы хотите удалить текст, не появляясь ни в одном регистре
  2. Вы хотите иметь возможность указать регистр по умолчанию, кроме "

Первое можно сделать, просто используйте _регистр, который называется регистром «черной дыры», а не чем-то вроде aрегистра. Например:"_dd

Второе не может быть сделано, насколько я знаю.

См :help registers.

Heptite
источник
Это все еще добавляет еще два символа к повторяющейся задаче, я хотел изменить регистр по умолчанию на _, поэтому я сбрил два нажатия клавиш в цикле удаления-вставки.
Эван Кэрролл
@EvanCarroll: вам не нужно указывать регистр для цикла удаления-вставки. Обе операции используют регистр по умолчанию (") по умолчанию.
garyjohn
Правильно, но я не хочу, чтобы удаление закрывало то, что находится в регистре по умолчанию, потому что я хочу вставить его, не указывая регистр не по умолчанию для вставки или удаления.
Эван Кэрролл
Понял. В этом случае, как писал Гептит, я не вижу способа сделать это.
garyjohn
1

Вы всегда можете сделать что-то вроде этого:

nnoremap d "_d
vnoremap d "_d

Но я бы не советовал: по умолчанию Vim должен оставаться таким, какой он есть.

Вместо этого "_dя использую эти отображения для удаления в регистр черной дыры:

nnoremap <leader>d "_d
vnoremap <leader>d "_d

Это только на одну клавишу короче, но это лучше, чем перезапись Vim по умолчанию.

Я использую это отображение, когда мне нужно вставить что-то несколько раз:

vnoremap <leader>p "_dP

Который идет так:

10 yank something
20 select something else
30 paste over it
40 GOTO 20
romainl
источник