Wenn ich meine Zuordnungen mit überprüfe
:verb nmap y
Ich bekomme:
n y<C-G> *@:call setreg(v:register, <SNR>104_recall())<CR>
Last set from ~/.vim/bundle/vim-fugitive-2.2/plugin/fugitive.vim
Ich versuche es mit :unmap y<C-G>
und mit zu entfernen :unmap y<C-g>
, aber es hat keine Auswirkung und ich erhalte den Fehler E31: No such mapping
.
Wie kann ich diese Zuordnung entfernen? Warum funktioniert :unmap y<C-G>
hier nicht?
key-bindings
Alexey
quelle
quelle
fugitive
Plugin gibt.Antworten:
Es scheint, dass die Zuordnung lokal zu einem Puffer ist, wie er mit dem Argument definiert wurde
<buffer>
.Wenn Sie eingeben
:unmap y<C-G>
, Sie Vim stellen eine globale Zuordnung unmap der{lhs}
isty<C-G>
, aber es gibt wahrscheinlich keine solche globale Kartierung auf Ihrem System daher die Fehler.Wenn Sie die Zuordnung der lokalen Zuordnung aufheben möchten, müssen Sie dasselbe Argument
<buffer>
verwenden, mit dem sie definiert wurde::unmap <buffer> y<C-G>
Bearbeiten:
Um den Prozess zu automatisieren, können Sie ein Autocmd installieren, das die Ereignisse überwacht
VimEnter
,BufNewFile
undBufReadPost
. Es würde testen, ob das Mapping vorhanden istif !empty(maparg('y<C-G>', 'n'))
, bevor versucht wird, es zu löschen. Es könnte etwas geben wie:Sie konnten dies nicht in Ihr schreiben,
vimrc
da letzteres vor Ihren Plugins bezogen wird, die alles überschreiben würden, was Sie tun. Stattdessen müssten Sie es innen schreiben~/.vim/after/plugin/mappings.vim
. Der Dateiname (mappings.vim
) spielt keine Rolle, nur das Verzeichnis ist wichtig (~/.vim/after/plugin/
).Bearbeiten 2:
Wie Ihr letzter Kommentar sagt, scheint es eine andere Möglichkeit zu geben, die Zuordnung zu deaktivieren.
fugitive
Installieren Sie die Zuordnungen<C-R><C-G>
undy<C-G>
nur, wenn sieg:fugitive_no_maps
sich von Null unterscheiden. Also, wenn Sielet g:fugitive_no_maps=1
in Ihre aufnehmenvimrc
,y<C-G>
sollte nicht definiert werden.quelle
autocmd
Lösung funktioniert mehr oder weniger (mit Ausnahme der ersten übereinstimmenden Datei danachlvim
). Von~/.vimrc
. Ich verstehe nicht, warum ich an einVimEnter
Ereignis gebunden bin . AuchBufReadPost
scheint nicht viel besser zu sein alsBufRead
. Und es ist sinnvoll zu betonen, dass keine nachfolgenden Leerzeichen danachunmap
erlaubt sind. Eine bessere Lösung ist es,unmap
s in~/.vim/after/ftplugin/FILETYPE.vim
( ft ) zu setzen.