Vim забывает дерганный текст. Все время - PullRequest
2 голосов
/ 27 мая 2011

Вот что я делаю:

  1. Переход в визуальный режим
  2. Выделение текста
  3. Нажмите y (или x )
  4. Вернитесь в командный режим
  5. Нажмите p

Примерно 2 раза из 5 Vim забывает текст иобычно просто вставляет новую строку.Это очень расстраивает.Это ошибка?Я не могу воспроизвести это, это кажется совершенно случайным.

Ответы [ 2 ]

13 голосов
/ 27 мая 2011

Когда вы запускаете p, он вставляется из регистра по умолчанию. Содержимое регистра по умолчанию изменяется каждый раз, когда вы выполняете любое из следующих действий:

  • y чтобы выдернуть
  • d{motion} удалить
  • x для удаления символа
  • c{motion} для удаления и входа в режим вставки
  • s для удаления символа и перехода в режим вставки
  • в визуальном режиме p перезапишет выделенный текст регистром по умолчанию и перезапишет регистр по умолчанию выбранным текстом (или, проще говоря, он меняет регистр по умолчанию и выделенный текст).

С таким количеством команд, которые касаются регистра по умолчанию, довольно часто случается так, что он не содержит того, что вы ожидаете. По этой причине полезно иметь привычку всегда указывать регистр, когда вы удаляете или вынимаете что-то, что вы собираетесь вставить позже.

Попробуйте вместо этого:

  1. Перейти в визуальный режим
  2. Выделите текст
  3. Нажмите "ay (или "ax)
  4. Вернитесь в командный режим
  5. Нажмите "ap
0 голосов
/ 03 декабря 2012

Вы можете найти yankstack полезным.После установки, после вставки с помощью p, вы можете использовать Ctrl + n и Ctrl + p , чтобы просмотреть все недавноyanked text.


Или более простое решение - вставить из регистра 0:

From :help "0

Нумерованный регистр 0 содержит текст изсамая последняя команда yank, если в команде не указан другой регистр с ["x].

Я делаю это очень часто, поэтому у меня есть эта карта:

" Paste last yanked item
noremap <Leader>p "0p
noremap <Leader>P "0P
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...