NERDCommenterのデフォルトのコメント文字の変更

Aug 23 2020

私は過去に同様の質問をしましたが、あまりにもうまく解決することができませんでした。区切り文字を変更する方法を理解できた唯一の方法は、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に貼り付けたところ、機能したので、問題を修正する必要があると思います:)

回答

1 filbranden Aug 23 2020 at 11:21

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明示的に作成するよりも優れていますが、この場合、おそらくautocmdNERDCommenterの前に実行され、どちらも機能しません...いずれにせよ、グローバルDictオーバーライドは行く方法!)