Я использую vim как средство просмотра в полночь коммандер, и я хочу быстро просмотреть и закрыть файл. Как я могу сопоставить управляющую клавишу с :q в обычном режиме, чтобы vim завершал работу, только если ничего не изменилось?
1 ответ
Чтобы сделать это только для текущего сеанса vim , введите следующие команды (в vim). (Пробелы добавлены для ясности.
Не вводите пробел, кроме случаев, когда я указал пробел.)
: m a p Пробел Ctrl+V Esc Пробел : q Ctrl+V Enter Enter
Чтобы сделать это только для оставшейся части текущего сеанса терминала, введите следующие команды (в терминале, т.е. в оболочке). (Разрыв строки добавлены для ясности. Введите следующее все в одной строке; не вводите Enter, кроме случаев, когда я указал Enter.)
E X I N I T =
" : m a p Пробел Ctrl+V Esc Пробел : q Ctrl+V Enter " Enter
а потом
export EXINITEnter
Чтобы сделать изменения «постоянными» (т. Е. До тех пор, пока вы не вернете файлы обратно), поместите вышеуказанные команды (EXINIT="…" и export EXINIT) в ваш .bash_profile и / или .bashrc .
(Вы можете поместить их вместе в одну строку, разделяя их ;
Вы можете сократить это, объединяя их в export EXINIT="…" .)
Это не вступит в силу до тех пор , пока снова войти в систему , или , возможно , пока вы не начнете новую оболочку, если вы просто введите команды EXINIT или source файла , в который вы положили команды EXINIT
Примечание: если вы не используете bash в качестве основной оболочки, вам может потребоваться изменить вышеперечисленное для вашей оболочки.
Или попробуйте ввести команду :map … в свой файл .exrc .
Если это не очевидно,
:map string1 string2
(в vi / vim) создает отображение (перевод), чтобы при вводе string1 (в командном режиме) редактор действовал так же, как и string2 .
А Ctrl+V - это супер-escape-символ, который сообщает и vi / vim и оболочке (фактически, вероятно, всем программам или, по крайней мере, большинству из них), что следующий символ должен интерпретироваться как буквальный текстовый символ, и не как контрольный персонаж.
Обратите внимание, что Ctrl+V, а затем Enter дают вам символ возврата каретки, который часто отображается как ^M ; но, :map string2 что интерпретируется как Enter.
