2

Не смог понять это ...

Поэтому я обычно люблю выбирать слово (скажем, albatross) и копировать его в регистр, используя v i w y, который - как я понимаю - копирует его в * регистр.

Затем я хочу вставить его поверх другого слова (sparrow), поэтому я сделаю v i w p.

Но часто я хочу вставить оригинальное слово (albatross) поверх еще одного слова (osprey), но когда я пытаюсь повторить мои прошлые команды, вставленное значение получается как sparrow , а не как albatross . Это, я знаю, потому, что когда текст удаляется перед вставкой, он копируется в регистр * , перезаписывая albatross sparrow .

Я подумал, что смогу обойти это, используя именованные регистры, поэтому я попытался скопировать с помощью v i w " 1 y и вставить с помощью v i w " 1 p, но это просто воспроизводит мою первоначальную проблему с регистром * с использованием регистра "1 .

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

Как сделать что-то подобное эффективно?

2 ответа2

5

Регистр 0 содержит последний восстановленный текст, поэтому, как только вы восстановите какой-то текст, вы сможете вставлять его снова и снова с помощью "0p . Подробнее об этом см.

:help quote0
2

Вы должны использовать "a (именованные) регистры "z to " вместо пронумерованных регистров, которые автоматически сохраняют предыдущие удаления.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .