Как использовать CapsLock вместо Escape в Vim?

Не можете Вы использовать rsync? Такая большая передача, несомненно, повредится где-нибудь, и я не уверен, что предложенные механизмы могут продолжиться от того, где она прервалась.

6
02.11.2014, 04:38
5 ответов

Я не думаю, что вы можете карту Capslock изнутри VIM. Вы отменяете его в X с использованием SetXKBMAP :

setxkbmap -option caps:swapescape

для перенапряжения в консоли, если ваше дистрибутив Systemd , вы можете использовать специальную макет клавиатуры в / etc / vconsole .Conf , как описано в Archi Wiki , а для других систем INIT см. Это u & l Ответ .

9
27.01.2020, 20:25

inoremap означает нерекурсивное отображение режима вставки. vnoremap - это нерекурсивная карта визуального режима. Итак, vnoremap jj - это то, что вам нужно.

0
27.01.2020, 20:25

Вы можете использовать вызов xmodmapпри запуске Vim, чтобы сопоставить Capslock с Escape. Модификацию можно отменить, как только вы покинете Vim. Добавьте следующие строки в ваш.vimrc:

au VimEnter * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
au VimLeave * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Caps_Lock'

Однако это может привести к проблемам, если у вас несколько сеансов Vim. Как только вы закрываете один из них, модификация отменяется для всех, так как xmodmapдействует глобально.

4
27.01.2020, 20:25

Если вы хотите сопоставить Caps Lock и Escape с Escape , вместо того, чтобы менять их местами, используйте

setxkbmap -option caps:escape

вместо ...:swapescape.

Используйте

setxkbmap -option

, чтобы очистить все существующие параметры, тогда все вышеперечисленное должно работать.

9
15.04.2020, 18:51

Попробуйте это в файле ~/.vimrcили ~/.vim/vimrc:

:autocmd BufWinEnter * !setxkbmap -option caps:swapescape
:autocmd BufWinLeave * !setxkbmap -option

Вместо первой строки можно использовать псевдоним в ~/.bashrcили~/.profile:

alias vim="setxkbmap -option caps:swapescape && vim"

Недостатком этих подходов является то, что пока вы не закрыли vim, ваш CapsLock будет вашим Escape и наоборот -наоборот, машиной -по ширине.

Решение этого:

Для этого я использую таймаут с ключом -привязка swap только во время требуемого режима (то есть InsertMode ):
au CursorHoldI * stopinsert
au InsertEnter * silent! let updaterestore=&updatetime | set updatetime=15000 | execute "!setxkbmap -option caps:swapescape" | redraw!
au InsertLeave * silent! let &updatetime=updaterestore | execute "!setxkbmap -option" | redraw!

Теперь, во время InsertMode, CapsLock и Escape будут обмениваться машинами -шириной, но поскольку я установил время -для InsertMode равным 15000, мне не нужно беспокоиться об этом, так как оно будет автоматически реверсируется за 15 секунд бездействия. ;-)

-Химаншу

0
05.01.2021, 09:55

Теги

Похожие вопросы