Скасувати в режимі вставки


23

Чи є команда скасувати останню операцію, виконану в режимі вставки?

Я просто вставив текст із неправильного реєстру, використовуючи <C-r>два варіанти:

  1. Видаліть від руки те, що я щойно вставив, і починайте спочатку.
  2. Перейдіть у звичайний режим, натисніть uі втратите текст, який я набрав перед натисканням <C-r>.

Чи є кращий спосіб?

Відповіді:


16

Vim пропонує обмежену можливість вказувати область неприпустимих змін за допомогою Ctrl-G uкоманди, яка порушує послідовність скасування. Побачити

:help i_CTRL-G_u

У вашому випадку рішенням було б перезавантажити <C-R>так:

:inoremap <C-R> <C-G>u<C-R>

Тоді введення <C-O>uскасує лише зміни, внесені з моменту введення <C-R>. Побачити

:help i_CTRL-O

1
Це геніально, я не знав про цю команду. Існує досить велика затримка між набором тексту <C-O>uта відображенням результату на екрані (близько 4 секунд), будь-яка ідея про те, як я можу позбутися цього?
zool

Я також це помітив. Не знаю; Я спробую це з’ясувати.
garyjohn

Гей, чи можливо, ви мали на увазі <CR> (повернення вагона) замість <CR> (ctrl-r)?
Дервент

Ні. Оригінальне питання стосувалося поведінки <CR>, тож саме для цього використовується відображення. Однак ви можете замінити <CR> на <CR> у цьому відображенні, щоб послідовність скасування перервала замість <CR>. Більше прикладів можна знайти на :help i_CTRL-G_u.
garyjohn

6

З режиму вставки:

  1. Якщо ваш вставлений текст менший, ніж один рядок (звідси випливає друга точка), просто натисніть, <C-u>щоб видалити всі символи перед курсором у поточному рядку.

  2. Якщо вставлений текст більше одного рядка, ваше друге рішення буде працювати краще, адаптована наступним чином : <C-o>u.

Обидві точки вгорі розпочнуться та залишаться - або закінчуються - в режимі вставки; вони насправді однакові з запропонованими рішеннями, просто коротше :)


6

Ви можете спробувати <C-w>(видаляє слово зліва) або <C-u>(очистити символи перед курсором при натисканні одного разу; видалити рядок рядка при натисканні вдруге). Дивіться :help i_CTRL-Wі :help i_CTRL-U.

Якщо ви вставляєте багато з реєстру, звичайно, швидше скасувати зміни, ви можете використовувати <C-o>для цього вставний звичайний режим (виконайте одну команду звичайного режиму, потім поверніться до режиму вставки).

Загалом, корисно розміщувати свої зміни на невеликі шматочки, часто повертаючись до звичайного режиму, щоб у вас були можливості дрібної деталізації скасування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.