Что означает «inoremap» в vimrc - PullRequest
       32

Что означает «inoremap» в vimrc

23 голосов
/ 10 февраля 2012

В файле примера vimrc есть строка ниже

inoremap Ctrl-u Ctrl-G u Ctrl-u

Что означает inoremap и какова функция этой строки?

Ответы [ 3 ]

18 голосов
/ 29 августа 2014

Подробнее о том, почему команда имеет такое странное имя, см. это превосходное описание между разницей между map и noremap.Очень полезно знать!

Подводя итог этой статье, можно сказать следующее:

Один недостаток команд *map - опасность повторения ...

Vim предлагает другой набор команд сопоставления, которые не будут учитывать сопоставления при выполнении своих действий.

Итак, noremap позволил избежать ужасной рекурсии сопоставлений, подобных

:nmap dd O<esc>jddk

где dd в правой части карты возвращается к левому определению карты, а Vim застревает в бесконечном цикле!

14 голосов
/ 10 февраля 2012

vim :help inoremap очень поэтичен по этому поводу:

:ino[remap] {lhs} {rhs}         mapmode-i             :ino :inoremap
:ln[oremap] {lhs} {rhs}         mapmode-l             :ln  :lnoremap
:cno[remap] {lhs} {rhs}         mapmode-c             :cno :cnoremap
                    Map the key sequence {lhs} to {rhs} for the modes
                    where the map command applies.  Disallow mapping of
                    {rhs}, to avoid nested and recursive mappings.  Often
                    used to redefine a command.  {not in Vi}

Таким образом, он делает некоторые сопоставления в режиме вставки для ^ U , которые показывают имя файла (^G, отменить самое последнее изменение (u) и прокрутить буфер вверх на половину экрана (^U).

Я понятия не имею, зачем кому-то нужна эта конкретная последовательность команд, кроме демонстрациифункция inoremap - ^U в относится к значению, которое имела команда при создании определения, вместо того, чтобы обращаться к переопределенному отображению ^U.

4 голосов
/ 11 января 2017

Я тоже задумался над этим.См. http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_1)#Insert_mode_maps:

Карты режимов вставки

Чтобы отобразить ключи, которые работают только в режимах вставки и замены, используйте команду 'imap' или 'inoremap'.

Пример: следующая команда отображает для вставки имя каталога текущего буфера:

:inoremap <F2> <C-R>=expand('%:p:h')<CR>

Чтобы отобразить в настоящее время определенные карты режима вставки, используйте команду 'imap' без аргументов:

:imap

Чтобы удалить раскладку клавиатуры из режима вставки, используйте команду «: iunmap».Например, следующая команда удаляет карту режима вставки для.

:iunmap <F2>

Поскольку печатаемые ключи вставляют символ в текущий буфер в режиме вставки, вы должны использовать непечатаемые ключи для создания карт режима вставки.Некоторые примеры для непечатаемых клавиш включают функциональные клавиши, клавиши с префиксом Ctrl или Alt.

[snip]


Так, например, в моем ~ / .vimrc у меня есть

inoremap jk <ESC>
inoremap jj <Esc>

, который при нажатии в режиме вставки возвращает меня к нормальномурежим.

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