Vim newbie: отображение ключа kj на <Esc> не работает в терминале gnome
Я только начал изучать Vim. Я использую Vim в gnome-терминал (на Ubuntu 14.04). Я хочу сопоставить ключи kj с Esc в моем файле vimrc. Я добавил следующие две строки в мой файл vimrc (~/.vimrc):
inoremap kj <Esc>
cnoremap kj <Esc>
Вопрос 1: я получил свой файл vimrc (даже перезапустил терминал), но когда я быстро набираю kj в режиме вставки, он просто набирает эти две буквы kj и не переходит в нормальный режим. Я делаю что-то неправильно? Как правильно сопоставить клавишу Esc с чем-то другим?
Вопрос 2: Как мне отредактировать мой vimrc для отображения заглавных букв на Esc?
В Vim,
:echo $COLORTERM
отображает "гном-терминал"
Для справки, вот мой полный файл vimrc (без комментариев):
set t_Co=256
colorscheme wombat256mod
syntax on
set hlsearch
set incsearch
set number
set autoindent
set ts=4
set ignorecase
set title
set scrolloff=5
" Map <ESC> key to kj
inoremap kj <Esc>
cnoremap kj <Esc>
set paste
set cursorline
2 ответа
Таблицы режимов вставки не будут работать, пока активен режим вставки, и он активен по умолчанию:
set paste
Вам, вероятно, будет лучше удалить эту строку, чтобы режим вставки не был активным, и добавлял простой способ включить его, когда вы этого захотите. Я использую это:
set pastetoggle=,p
Режим вставки по умолчанию выключен, и я могу легко переключать его, используя ,p
От :help 'paste
:
When the 'paste' option is switched on (also when it was already on):
- mapping in Insert mode and Command-line mode is disabled
- abbreviations are disabled
- 'textwidth' is set to 0
- 'wrapmargin' is set to 0
- 'autoindent' is reset
- 'smartindent' is reset
- 'softtabstop' is set to 0
- 'revins' is reset
- 'ruler' is reset
- 'showmatch' is reset
- 'formatoptions' is used like it is empty
These options keep their value, but their effect is disabled:
- 'lisp'
- 'indentexpr'
- 'cindent'
На 2)
Не совсем отвечая на вопрос, так как это сопоставляет CapsLock для всех приложений, а не только Vim.
xmodmap - <<EOD
! Set caps lock as escape, losing Caps Lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
EOD
Я поместил этот скрипт в PATH где-то как capswap с chmod + x. Пока вы не выйдете из системы, больше нет CapsLock и Esc там, где он должен быть для vi, возле левого мизинца.
Разрешить Esc блокировать заглавные буквы (что я обнаружил, даже если программист на COBOL редко, если вообще необходим)
xmodmap - <<EOD
! Set caps lock as escape, and escape as CapsLock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
keysym Escape = Caps_Lock
add Lock = Caps_Lock
EOD
Между прочим, я привык называть это capswap, но на самом деле я убрал часть "подкачки" давным-давно, как в первом листинге, и просто запустил без CapsLocking. Ваши предпочтения могут привести к другому выбору. Первый скрипт дает эквивалент двух клавиш Esc.