Как переместить выдернутый текст в определенный регистр в vim?

#vim

#vim

Вопрос:

При редактировании в vim я довольно часто останавливаюсь, когда собираюсь удалить текст, и замечаю, что ранее извлеченный текст станет удобным для следующих операций.

Итак, как переместить уже извлеченный текст в определенный регистр (например, под a)?

Комментарии:

1. Не ответ на ваш конкретный вопрос, но знаете ли вы о YankRing ( vim.org/scripts/script.php?script_id=1234 )? Это может быть полезно.

Ответ №1:

Переместить регистр 0 в register a :

 :let @a=@0
  

Комментарии:

1. :let @a=@" у меня работает. Есть идеи (сопоставления?) как сделать это более удобным? Немного лень каждый раз писать команду. Требуется меньше времени, чтобы вставить и удалить еще раз с указанным регистром.

2. @Arnis привязать его к ключу? что-то вроде :map <F3> :let @a=@"<CR>

3. После первого раза вы можете просто нажать :l , а затем стрелку вверх, чтобы отозвать эту команду. Ну, предположим, что с тех пор вы не запускали другую команду, которая начинается с l .

Ответ №2:

Вы можете использовать что-то вроде:

 noremap <leader>ma :let @a=@<CR>
  

Теперь, когда вы нажимаете ma в обычном режиме, ваш последний извлеченный текст попадет в регистр ‘a’.
Примечание: Предполагается, что лидер равен »

Комментарии:

1. m Сопоставлено с чем-либо по умолчанию?

Ответ №3:

Вы также можете использовать 0 регистр, если он вам нужен только на короткий промежуток времени. Из :help quote_number (чуть ниже :help registers ):

 2. Numbered registers "0 to "9         

Vim fills these registers with text from yank and delete commands.
   Numbered register 0 contains the text from the most recent yank command, 
unless the command specified another register with ["x].
  

(ссылка на остальные)

Ответ №4:

В качестве альтернативы вы можете удалить текст из реестра devnull с помощью "_d (на самом деле он называется blackhole registry). Смотрите :help quote_ . Тогда нет необходимости перемещать регистры, ваш ранее извлеченный текст по-прежнему будет доступен с p .

Комментарии:

1. возможно ли сопоставить _d с dD? Я думаю, что это был бы самый удобный способ решить эту проблему. просто удерживая shift, когда я не хочу потерять ранее выдернутый текст…