Как отменить нажатие Ctrl-U в режиме вставки, чтобы случайно не потерять мою работу - PullRequest
3 голосов
/ 10 июля 2019

Если вы похожи на меня и часто используйте Ctrl + Shift + U для ввода специальных символов (например, Ctrl + Shift + U 2014 для ввода ), возможно, вы случайно ошиблись во времени и нажали Ctrl + U + Shift вместо этого (нажмите U , удерживая Ctrl , но непосредственно перед нажатием Shift ).

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

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

( Ctrl + U"Удаляет все введенные символы перед курсором в текущей строке." См. :help i_CTRL-U или thisвопрос )

Нажатие Esc U не отменяет это удаление, как если бы я удалил строку с d д .(Даже нажатие Ctrl + O U без выхода режим вставки не работает).

Само собой разумеется,если вы только что потратили несколько минут или час на составление действительно длинного абзаца (который будет считаться одной строкой, если вы не вставили разрывов строк), не выходя из режима вставки, это может быть очень обескураживающим и приводящим в замешательство напрасно нажимать u , ожидая, что ваша линия вернется, но вместо этого она вернется к четному более раннему состоянию отмены!Доверие, которое вы оказали своему надежному редактору, vim, внезапно разбилось вдребезги, когда вы печально понимаете, что теперь вам нужно попытаться вспомнить то, что вы только что написали, и снова написать все это.

Я могу подуматьиз нескольких обходных путей , чтобы попытаться сделать редактирование более безопасным, например, попытаться не забыть часто выходить из режима вставки, чтобы создать новый блок отмены (см. :help undo-blocks) ...

НоЯ не должен иметь , чтобы так осторожно наступать при написании чего-либо.Я должен быть в состоянии оставаться в потоке (то есть продолжать сочинять, не выходя из режима вставки), пока слова продолжают течь.(И, вероятно, можно с уверенностью сказать, что большинство редакторов не имеют этой проблемы. В большинстве редакторов Undo отменяет ваши изменения по одному символу за раз, так как у них нет никакого способа сгруппировать несколько символов вместе в одну «вставку»).).

Поскольку я, вероятно, не забуду быть очень осторожным, в итоге я просто отключил использование Ctrl-U в режиме вставки, а теперь:

imap <C-U> <Nop>

Но я хотел бы знать, есть ли какой-нибудь достойный способ заставить Ctrl-U по-прежнему работать на случай, если я когда-нибудь захочу его использовать, , но создать состояние отмены так что это удаление может быть легко отменено с помощью U .Это возможно?(И почему это не поведение по умолчанию?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...