NERDCommenterのデフォルトのコメント文字の変更
私は過去に同様の質問をしましたが、あまりにもうまく解決することができませんでした。区切り文字を変更する方法を理解できた唯一の方法は、NERDCommenterソース自体を変更することです。
# plugin/NERD_commenter.vim
let s:delimiterMap = {
...
\ 'asm': { 'left': '#', 'leftAlt': ';' },
...
}
私はこのようなことをしたいので、それは私のvimrc(またはこれを別のマシンに移動しても機能するように他の場所)に配置されます:
augroup AsmComments
autocmd!
autocmd Filetype asm let b:NERDCommenterDelims['left'] = '#'
augroup END
これを行うための適切な方法は何でしょうか?
更新:ちなみに、(質問で)次のコマンドを入力してvimに貼り付けたところ、機能したので、問題を修正する必要があると思います:)
回答
g:NERDCustomDelimiters
オーバーライドを使用してDictに設定します。あなたはあなたのvimrcでそれを設定することができます:
let g:NERDCustomDelimiters = {
\ 'asm': { 'left': '#', 'leftAlt': ';' }
\ }
NERDCommenterがロードされたときにこの変数が定義されている場合、この変数は区切り文字マップを拡張します。
NERDCommenterは、この変数を次のように文書化します:help 'NERDCustomDelimiters'。
スクリプトで処理する新しいファイルタイプがある場合、またはファイルタイプのデフォルトの区切り文字を上書きする場合は、このオプションを使用します。
b:NERDCommenterDelims
質問で提案したように、オーバーライドの問題は、最初に設定したfrom NERDCommenterの後に発生する必要があるautocmd
ため、vimrcで設定した場合にブロックが機能しない可能性があることです...
after/
たとえば、ディレクトリなどに保存することで、機能させることができます~/.vim/after/plugin/nerd_commenter_overrides.vim
。
(理想的には、ftplugin
名前asm.vim
を作成する方がautocmd
明示的に作成するよりも優れていますが、この場合、おそらくautocmd
NERDCommenterの前に実行され、どちらも機能しません...いずれにせよ、グローバルDictオーバーライドは行く方法!)