Vim: переназначение в любом режиме, кроме визуального - PullRequest
1 голос
/ 17 апреля 2020

Я выполняю сопоставление клавиш в визуальном режиме:

:vnoremap Ó b

Однако для всех других режимов мне нужно другое сопоставление. Есть ли способ сделать что-то вроде:

:'vremap

, чтобы указать все другие режимы? В настоящее время я делаю что-то очень скучное, например:

"Simulate option-shift arrow keys to highlight chunks of text
:vnoremap Ó bv
:vnoremap Ò el
:vnoremap Ô j
:vnoremap  k

:nnoremap Ó <Esc>vb
:nnoremap Ò <Esc>vel
:nnoremap Ô <Esc>vj
:nnoremap  <Esc>vk

:inoremap Ó <Esc>lvb
:inoremap Ò <Esc>lve
:inoremap Ô <Esc>vj
:inoremap  <Esc>vk

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

Есть ли способ сделать что-то вроде :'vremap для указания всех других режимов?

Как указывал @Chelz, для всех режимов нет команды map. Однако существует несколько способов избежать необходимости определять одно и то же отображение несколько раз для нескольких режимов.

В этот ответ автор иллюстрирует, как использовать a для l oop для Отображение в более чем один режим одновременно:

for map_command in ['nnoremap', 'inoremap']
  execute map_command . ' <silent> Ó <Esc>vb'
  execute map_command . ' <silent> Ò <Esc>vel'
  execute map_command . ' <silent> Ô <Esc>vj'
  execute map_command . ' <silent>  <Esc>vk'
endfor

И в этот ответ , функция оболочки используется для достижения того же:

function! MapBoth(keys, rhs)
    execute 'nnoremap' a:keys a:rhs
    execute 'inoremap' a:keys a:rhs
endfunction

call MapBoth('Ó', '<Esc>lvb')
call MapBoth('Ò', '<Esc>lve')
call MapBoth('Ô', '<Esc>vj')
call MapBoth('', '<Esc>vk')

С этими решениями вам нужно будет определить сопоставления только один раз.

Отказ от ответственности: я не пробовал решения выше, но, пожалуйста, сообщите нам, если они не работают для вас.

0 голосов
/ 17 апреля 2020

взгляните на документацию :h map, там вы найдете следующее:

:no[remap]  {lhs} {rhs}     |mapmode-nvo|   *:no*  *:noremap* *:nor*
:nn[oremap] {lhs} {rhs}     |mapmode-n| *:nn*  *:nnoremap*
:vn[oremap] {lhs} {rhs}     |mapmode-v| *:vn*  *:vnoremap*
:xn[oremap] {lhs} {rhs}     |mapmode-x| *:xn*  *:xnoremap*
:snor[emap] {lhs} {rhs}     |mapmode-s| *:snor* *:snore* *:snoremap*
:ono[remap] {lhs} {rhs}     |mapmode-o| *:ono* *:onoremap*
:no[remap]! {lhs} {rhs}     |mapmode-ic|    *:no!* *:noremap!*
:ino[remap] {lhs} {rhs}     |mapmode-i| *:ino* *:inor* *:inoremap*
:ln[oremap] {lhs} {rhs}     |mapmode-l| *:ln*  *:lnoremap*
:cno[remap] {lhs} {rhs}     |mapmode-c| *:cno* *:cnor* *:cnoremap*
:tno[remap] {lhs} {rhs}     |mapmode-t| *:tno* *:tnoremap*

, кажется, нет варианта для того, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...