В какой-то момент мой Vim отменит целое слово, когда я нажму u
.
[i]typing some words[C-c][u]
Приведет к
typing some
Однако отмена детализации, похоже, изменилась на удаление одной буквы за раз.
[i]typing some words[C-c][u]
Результаты в
typing some word
Я помню, как читал кое-что о настройке отмены детализации в Practical Vim, но не могу вспомнить, как это контролировать. Любая помощь приветствуется!
:help
файлах об этом ... См .: Как мне отладить мой файл vimrc? ... Кроме того, использование<C-c>
для выхода из режима вставки может иметь побочные эффекты ( см. Это ) и может быть частью проблемы ... Я бы предложил использоватьEsc
или<C-[>
( см. Это )Ответы:
Ручное нарушение последовательности отмены
Вы можете вручную прервать последовательность отмен в режиме вставки с помощью
<C-G>u
. Из справки :пример
Это оставит вас с текстом
Разбивка команд
Автоматическое решение
Более тонкий контроль уровня отмены
Вот небольшой фрагмент VimScript, который используется
<C-G>u
для создания разрывов отмены, когда вы начинаете удалять текст, а также когда вы начинаете вводить текст снова после удаления.Ноты
Это будет работать для
<BS>
,<C-W>
(удалить слово), и<C-U>
(удаление в начале строки). Если в режиме вставки есть другие способы удаления, их можно поддержать, добавив дополнительныеinoremap
вызовы в конце.источник
<C-G>u
, что уже слишком поздно.i
последующим длинным предложением с последующим пробелом, чтобы удалить часть того, что я написал (все в режиме вставки). Тогда я понимаю, что не должен был отступать, и то, что я написал, было в порядке. Я отменяю, но затем весь вставленный текст отменяется. Так что либо у меня нет ни одного длинного предложения, ни части, которая не стоит на заднем плане. Невозможно вернуть часть с возвратом назад. Есть ли способ сказать Vim, чтобы прервать последовательность отмены после возврата? (Теперь, когда я это говорю,map
конечно , можно использовать ing backspace).inoremap <CR> <C-G>u<CR>
что каждая отмена содержится в одной строке (больше не нужно отменять весь абзац, который вы набирали без перерыва).