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