Можно ли сопоставить Alt-hjkl в режиме вставки? - PullRequest
10 голосов
/ 21 марта 2011

прежде чем описать мою проблему, я бы перечислил env.приложения здесь:

OS:linux 2.6.37-ARCH  (archlinux i686)
vim: 7.2.436
Terminal emulator: urxvt (with 256colors patch)

kent$ echo $TERM
rxvt-256color

screen: Screen version 4.00.03 (FAU) 23-Oct-06

Я запускаю vim в терминале.Я хочу переместить курсор в режиме INSERT, нажав ALT-hjkl, после перемещения курсора оставайтесь в режиме INSERT, чтобы я мог продолжить набирать слова.

найденных статей:

http://vim.wikia.com/wiki/Mapping_fast_keycodes_in_terminal_Vim

http://vim.wikia.com/wiki/Get_Alt_key_to_work_in_terminal

что я пробовал:

в .vimrc сделать отображение keyCode с ttimeoutlen = 50 следующим образом: (в качестве примера было вставлено только отображение alt-j):

set timeout ttimeoutlen=50
set <F13>=^[j  "ctrl-v alt-j
imap <F13> <down>

с этим conf, перемещение курсора в режиме INSERT было в порядке.Если я нажму <ESC> и j.Vim возвращает меня обратно, чтобы вставить Mode.Я не знаю, почему ttimeoutlen=50 не работал.

также пытался:

set timeout ttimeoutlen=50
set <M-j>=^[j

С этой настройкой, когда я нажимал ALT-j, "e" сбыла напечатана метка акцента.

Ребята, можете ли вы дать мне какие-нибудь советы, как мне сопоставить ALT-hjkl в терминале?

Заранее спасибо

Кент

Ответы [ 2 ]

18 голосов
/ 21 марта 2011

Проще сопоставить, что делает ваша комбинация клавиш. Alt+something обычно приводит к символу, отличному от Ctrl+something.

Например, на моем Mac Alt плюс hjkl генерирует ˙∆˚¬. Итак:

imap ˙ <Left>
imap ∆ <Down>
imap ˚ <Up>
imap ¬ <Right>

сделает это.

12 голосов
/ 05 июня 2014

Для клавиш со стрелками:

Начните с просмотра кода клавиши, который ваш терминал отправляет в vim:

$ sed -n l
^[[1;9D 

В приведенном выше примере я запустил sedКоманду и нажали Alt + Left .

^[[1;9D - это экранированная последовательность, отправляемая vim, поэтому мы можем использовать ее для нашего отображения.

Добавьте это к вашему .vimrc

map <Esc>[1;9D :tabn<CR>

Теперьмы можем переключаться между вкладками vim, используя Alt + Left

...