Делаем вставку переназначения для комментатора - PullRequest
0 голосов
/ 17 апреля 2020

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

: inoremap лидер c пробел ==> es c лидер c пробел i

В основном, если я нахожусь в режиме вставки, я хочу выйдите из режима вставки, чтобы вставить комментарий (ведущий + c + пробел), а затем go обратно в режим вставки.

Каким будет правильное отображение :inoremap для этого? Сейчас у меня есть:

:inoremap <leader>c<space> <Esc><Leader>c<space>i

Но это, похоже, не работает (по крайней мере, вторая половина - кажется, что выполняется команда отображения). Примечание: плагин, который я пытаюсь переназначить:

https://github.com/preservim/nerdcommenter

[count]<leader>c<space> |NERDCommenterToggle|

Переключает состояние комментария выбранная линия (и). Если самая верхняя выделенная строка закомментирована, все выделенные строки не закомментированы, и наоборот.

Ответы [ 2 ]

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

Моя рекомендация состоит в том, чтобы вместо создания сопоставления режима вставки для этой цели просто использовать собственное сопоставление Ctrl+O, чтобы запустить одну команду обычного режима из режима вставки.

При условии, что для вашей клавиши лидера установлено значение по умолчанию \, вы можете использовать:

Ctrl + O , \ , c, Пробел

В конце этой последовательности вы останетесь в режиме вставки.

Преимущества этого подхода перед вставкой Отображение режима:

  • Вам не нужно никаких дополнительных настроек, поскольку Ctrl+O является собственной командой Vim.
  • Это работает для любого Нормального режима команда, поэтому вам не нужно добавлять дополнительные сопоставления для других команд, к которым вы, возможно, захотите получить доступ из режима вставки.
  • Добавление многосимвольного сопоставления в режиме вставки, начинающегося с <Leader>, означает, что Vim будет всегда пауза и удержание, если вы вставляете символ лидера. В этом случае он также будет приостановлен при вставке <Leader> и c. Я считаю, что лучше избегать такого рода отображений печатных символов, которые лучше всего печатать.
1 голос
/ 17 апреля 2020

От vim do c (:help nore):

Запретить отображение {rhs}, чтобы избежать вложенных и рекурсивных отображений

Другими словами, часть nore запрещает применение сопоставления к rhs (правая сторона).

Так что в вашем случае <Esc><Leader>c<space>i не вызывает сопоставление VimCommenter по этой причине.

Чтобы разрешить рекурсию, вы можете снять nore:

:imap <leader>c<space> <Esc><Leader>c<space>i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...