Я использую vim как средство просмотра в полночь коммандер, и я хочу быстро просмотреть и закрыть файл. Как я могу сопоставить управляющую клавишу с :q в обычном режиме, чтобы vim завершал работу, только если ничего не изменилось?

1 ответ1

0

Чтобы сделать это только для текущего сеанса 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .