2016-10-26 9 views
0

У меня есть следующие сопоставления клавиш в моем ~/.vimrcПрименение различных сопоставлений клавиш, когда внутри или вне комментария

" Format paragaph 
au FileType markdown nnoremap <buffer> <space> gwip 

" Send current line to tmux usind SendToTmux 
au FileType python,sh,zsh nnoremap <buffer> <space> yy:call SendToTmux(@")<cr>j 

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

ответ

2

Вы должны проанализировать текущий контекст с synIDattr(synID(line('.'),col('.')-1,1),'name'), как, например:

:nnoremap <buffer> <expr> <space> (synIDattr(synID(line('.'),col('.')-1,1),'name') =~? 'comment\\|doxygen') ? ':echo 1<cr>' : ':echo 2<cr>' 
+0

Мм .. Это только когда-либо отголоски «2». –

+0

У меня была эта проблема из-за некоторых символов, которые нужно было экранировать - в командной строке '\' необходимо экранировать. В вашем случае вам не нужно '\\ | doxygen', так как это связано с C++. Однако возможно, что не все подсветки синтаксиса комментариев содержат строку '' comment "' в их имени. Вам нужно будет переместить курсор и посмотреть, что ': echo synIDattr (synID (строка ('.'), Col ('.') - 1,1), 'name')" говорит вам, вы сможете определить ваше регулярное выражение - может быть лучше определить функцию, упрощающую определение регулярного выражения. –

 Смежные вопросы

  • Нет связанных вопросов^_^