LINUX.ORG.RU

Как правильно маппить imap?

 , ,


0

1

У меня есть ф-ция добавления комментария в начало строки(в смысле — закомментировать строку).

fu! Comment()
exec "s/^/" . g:comment . "/"
endfu
g:comment - это глобальная переменная в виде строки, для каждой рабочей среды создается своя, например для лиспа — let comment=";" Я заммапил эту фунцию на F9, все работает, но не знаю как правильно заммапить для режима вставки, пробовал
imap <F9> <esc> :call Comment() <cr>
Не работает, как ожидается, вставляет только при двойном нажатии. Так можно было бы оставить, но слегка раздражает. Тогда imap вообще, получается, не нужен, можно было бы нажимать esc F9 и было бы то же самое. Просто хотелось бы узнать на будущее, как вообще правильно маппить imap, в общем случае.

PS Плагины не предлагать:)

Заранее спасибо.



Последнее исправление: anonimous (всего исправлений: 2)
Ответ на: комментарий от anonymous

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

anonimous
() автор топика

Вообще <c-o> обычно применяют для этих целей, чтобы вернуться потом в режим вставки. Пример:

inoremap <F9> <c-o>:call Comment() \| exec 'normal! `^la'<cr>

vim-commentary кстати очень минималистичен и не с чем не пересекается, но в режиме вставки не работает. Если самому делать, то хоть 'comments' или 'commentstring' стоит использовать, чтобы не определять самому символ комментария.

UPD: в посте ошибка в том, что после <esc> стоит пробел.

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 1)

А зачем писать свой велосипед? Есть же готовые комментеры. Я, к примеру, использую nerdcommmenter.

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.