Назначить клавишу Escape на :q в vim в обычном режиме

Назначить клавишу Escape на :q в vim в обычном режиме

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

решение1

Чтобы сделать это только для текущего vimсеанса, введите следующие команды (в vim). (Пробелы добавлены для ясности. Не вводите пробел, за исключением тех мест, где я указал Space.)

:mapSpaceCtrl+ VEscSpace:qCtrl+VEnterEnter

Чтобы сделать это только для оставшейся части текущего сеанса Терминала, введите следующие команды (в Терминале; т.е. в оболочке). (Разрывы строк добавлены для ясности. Введите следующее в одну строку; не вводите, Enterкроме тех мест, где я указал Enter.)

E  X  I  N  I  T  =
"  :  m  a  p  Space  Ctrl+ V  Esc  Space  :  q  Ctrl+V  Enter  "  Enter

а потом

export EXINITEnter

Чтобы сделать изменения «постоянными» (т. е. пока вы не измените файлы обратно), поместите указанные выше команды ( EXINIT="…"и export EXINIT) в ваши .bash_profileand/or .bashrc. (Вы можете поместить их вместе на одной строке, разделив их ;. Вы можете сократить это, объединив их в export EXINIT="…".) Это не вступит в силу, пока вы снова не войдете в систему или, возможно, пока вы не запустите новую оболочку, если только вы просто не введете команды EXINITили sourceфайл, в который вы поместили EXINITкоманды.

Примечание:Если вы не используете bash в качестве основной оболочки, вам может потребоваться изменить приведенный выше код для вашей оболочки.

Либо попробуйте поместить :map …команду в свой .exrcфайл.


Если это не очевидно,

:картастрока 1 строка 2

vi/ vim) создает отображение (перевод), так что когда вы печатаете (в командном режиме), редактор действует так, как будто вы набрали . А + — это супер-экранирующий символ, который сообщает и / и оболочке (на самом деле, вероятно,string1string2CtrlVvivimвсепрограммы, или по крайней мере большинство из них), что следующий символ должен интерпретироваться как буквальный текстовый символ, а не как управляющий символ. Обратите внимание, что Ctrl+, Vза которым следует, Enter дает вам символ возврата каретки, который часто отображается как ^M; но в , который интерпретируется как .:map string2Enter

Связанный контент