Ändern der Standardkommentarzeichen in NERDCommenter
Ich habe in der Vergangenheit eine ähnliche Frage gestellt, konnte sie aber nicht allzu gut lösen. Die einzige Möglichkeit, herauszufinden, wie das Trennzeichen geändert werden kann, besteht darin, die NERDCommenter-Quelle selbst zu ändern:
# plugin/NERD_commenter.vim
let s:delimiterMap = {
...
\ 'asm': { 'left': '#', 'leftAlt': ';' },
...
}
Ich würde es vorziehen, so etwas zu tun, damit es in meinem vimrc sitzt (oder an einem anderen Ort, damit es immer noch funktioniert, wenn ich es auf einen anderen Computer verschiebe):
augroup AsmComments
autocmd!
autocmd Filetype asm let b:NERDCommenterDelims['left'] = '#'
augroup END
Was wäre der richtige Weg, dies zu tun?
Update : Übrigens, ich habe gerade den folgenden Befehl (in der Frage) eingegeben und diesen in vim eingefügt und es hat funktioniert, also denke ich, dass mein Problem behoben sein sollte :)
Antworten
Setzen Sie g:NERDCustomDelimitersauf ein Dict mit Überschreibungen. Sie können es in Ihrem vimrc einstellen:
let g:NERDCustomDelimiters = {
\ 'asm': { 'left': '#', 'leftAlt': ';' }
\ }
Wenn diese Variable beim Laden von NERDCommenter definiert wird, wird die Trennzeichenzuordnung damit erweitert .
NERDCommenter dokumentiert diese Variable auch unter :help 'NERDCustomDelimiters':
Verwenden Sie diese Option, wenn Sie neue Dateitypen haben, die das Skript verarbeiten soll, oder wenn Sie die Standardtrennzeichen eines Dateityps überschreiben möchten.
Das Problem beim Überschreiben besteht b:NERDCommenterDelims, wie Sie in der Frage vorgeschlagen haben, darin, dass es nach dem autocmdNERDCommenter erfolgen muss, der es ursprünglich festgelegt hat, sodass es unwahrscheinlich ist, dass der Block funktioniert, wenn er in Ihrem vimrc ...
Sie können es zum Laufen bringen, indem Sie es beispielsweise in einem after/Verzeichnis ~/.vim/after/plugin/nerd_commenter_overrides.vimoder ähnlichem speichern .
(Idealerweise wäre das Erstellen eines ftpluginNamens asm.vimbesser als das autocmdexplizite Erstellen eines Namens , aber ich befürchte, dass es in diesem Fall wahrscheinlich vor dem autocmdvon NERDCommenter ausgeführt wird und auch nicht funktioniert ... In jedem Fall ist die globale Dict-Überschreibung die weit weg!)