Modifica dei caratteri di commento predefiniti in NERDCommenter
Ho fatto una domanda simile in passato ma non sono riuscito a risolverla in un modo troppo carino. l'unico modo in cui sono stato in grado di capire come cambiare il delimitatore è modificando la sorgente NERDCommenter stessa:
# plugin/NERD_commenter.vim
let s:delimiterMap = {
...
\ 'asm': { 'left': '#', 'leftAlt': ';' },
...
}
Preferirei fare qualcosa di simile in modo che si trovi nel mio vimrc (o in qualche altro posto in modo che se lo sposto su un'altra macchina funziona ancora):
augroup AsmComments
autocmd!
autocmd Filetype asm let b:NERDCommenterDelims['left'] = '#'
augroup END
Quale sarebbe il modo corretto per farlo?
Aggiornamento : a proposito, ho appena digitato il seguente comando (nella domanda) e l'ho incollato in vim e ha funzionato, quindi penso che il mio problema dovrebbe essere risolto :)
Risposte
Imposta g:NERDCustomDelimiters
su un Dict con le tue sostituzioni. Puoi impostarlo nel tuo vimrc:
let g:NERDCustomDelimiters = {
\ 'asm': { 'left': '#', 'leftAlt': ';' }
\ }
Se questa variabile è definita quando viene caricato NERDCommenter, estenderà la sua mappa delimitatore con essa .
NERDCommenter documenta anche questa variabile sotto :help 'NERDCustomDelimiters':
Utilizzare questa opzione se si dispone di nuovi tipi di file che si desidera vengano gestiti dallo script o se si desidera sovrascrivere i delimitatori predefiniti di un tipo di file.
Il problema con l'override b:NERDCommenterDelims
, come hai suggerito nella domanda, è che deve accadere dopo il autocmd
da NERDCommenter che lo imposta inizialmente, quindi è improbabile che quel blocco funzioni se impostato nel tuo vimrc ...
Puoi farlo funzionare archiviandolo in una after/
directory, ad esempio ~/.vim/after/plugin/nerd_commenter_overrides.vim
o simile.
(Idealmente, creare un ftplugin
named asm.vim
sarebbe meglio che creare un autocmd
esplicitamente, ma temo che in questo caso verrebbe probabilmente eseguito prima del autocmd
da NERDCommenter e non funzionerebbe neanche ... In ogni caso, l'override globale di Dict è il ben fatto!)