Quando verifico meus mapeamentos com
:verb nmap y
eu recebo:
n y<C-G> *@:call setreg(v:register, <SNR>104_recall())<CR>
Last set from ~/.vim/bundle/vim-fugitive-2.2/plugin/fugitive.vim
Tento desmapear com :unmap y<C-G>
e com :unmap y<C-g>
, mas não tem efeito e recebo o erro E31: No such mapping
.
Como posso remover esse mapeamento? Por que não :unmap y<C-G>
trabalha aqui?
key-bindings
Alexey
fonte
fonte
fugitive
plugin.Respostas:
Parece que o mapeamento é local para um buffer, conforme foi definido com o argumento
<buffer>
.Ao digitar
:unmap y<C-G>
, você solicita ao Vim que retire o mapeamento de um mapeamento global cujo{lhs}
éy<C-G>
, mas provavelmente não existe esse mapeamento global no sistema, daí o erro.Se você deseja remover o mapeamento do mapeamento local, use o mesmo argumento
<buffer>
usado para defini-lo::unmap <buffer> y<C-G>
Editar:
Para automatizar o processo, você pode instalar um autocmd observando os acontecimentos
VimEnter
,BufNewFile
eBufReadPost
. Ele testaria se o mapeamento existeif !empty(maparg('y<C-G>', 'n'))
antes de tentar excluí-lo. Poderia dar algo como:Você não pode escrever isso no seu,
vimrc
porque o último é fornecido antes dos plugins, o que substituirá qualquer coisa que você faça. Em vez disso, você teria que escrever dentro~/.vim/after/plugin/mappings.vim
. O nome do arquivo (mappings.vim
) não importa, apenas o diretório é importante (~/.vim/after/plugin/
).Edição 2:
Como seu último comentário diz, parece que há outra maneira de desativar o mapeamento.
fugitive
instale os mapeamentos<C-R><C-G>
ey<C-G>
somente seg:fugitive_no_maps
for diferente de zero. Portanto, se você incluirlet g:fugitive_no_maps=1
dentro do seuvimrc
,y<C-G>
não deve ser definido.fonte
autocmd
solução funciona mais ou menos (exceto o primeiro arquivo correspondido depoislvim
). De~/.vimrc
. Não vejo por que anexar aoVimEnter
evento. Além disso,BufReadPost
não parece ser muito melhor do queBufRead
. E faz sentido enfatizar que nãounmap
são permitidos espaços à direita depois . De qualquer forma, a melhor solução é colocarunmap
s em~/.vim/after/ftplugin/FILETYPE.vim
( ft ).