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.

Другие вопросы по тегам