Я использую 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 EXINIT
Enter
Чтобы сделать изменения «постоянными» (т. Е. До тех пор, пока вы не вернете файлы обратно), поместите вышеуказанные команды (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.