Функция внутреннего слова карты VIM, когда я - команда перемещения - PullRequest
0 голосов
/ 28 апреля 2020

Я изучаю vim и медленно, но верно адаптирую свой vimr c.

Я перемещаюсь с помощью "jlim" и вхожу в режим вставки с помощью k. Все, что я хочу сделать, это объединить действия с текстовыми объектами.

Но когда я хочу изменить внутреннее слово (должно быть c кВт), для меня я go на одну строку вверх вместо изменения внутреннего слова , Я проверил: index и: c и: iw, но я не понимаю, как сопоставить мои действия внутреннему слову ??

vimr c:

`" set move keys in vim
   map m <down>
   map i <up>
   map j <left>
   map l <right>
`

приветствия

РЕШЕНИЕ для "{action} {text object}", когда k вставлено:

" set move keys in vim
nnoremap m <down>
nnoremap i <up>
nnoremap j <left>
nnoremap l <right>

" n for normal mode and noremap to not make k map to up
nnoremap k i

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Если я правильно понимаю, вы ищете :h onoremap, если вы хотите, чтобы ckw делал ciw, вам нужно

:onoremap kw viw

Это будет необходимо для всех типов скобок (для меня внутреннее и окружающее движение (ciw и caw)). Я бы не рекомендовал это. Просто придерживайтесь значения по умолчанию.

1 голос
/ 28 апреля 2020

Если вы просто хотите изменить все то, что i делает на k (что я бы посоветовал против, это мнемоника по причине), вы можете просто map это.

* 1005 Как говорится, голый map является излишним. Вам будет лучше с noremap, который не будет рекурсивно изменять ваши отображения . Вам также лучше указать режим, который вы хотите использовать для этих сопоставлений. Если вам нужно изменить клавиши управления движением (что я бы также не рекомендовал), я бы предложил
nnoremap m <down>
nnoremap j <left>
nnoremap l <right>
nnoremap i <up>

Затем вы можете изменить то, что вы хотите k, сделать с помощью еще одного nnoremap:

"n for normal mode, noremap for not making your k map to <up>
nnoremap k i
...