vim mudar: x function para excluir buffer em vez de salvar e sair

Eu quero definir :x no vim gui-mode para delete buffer porque eu sempre mato todo o gvim, o que é meio chato. Eu sei que posso especificamente definir problemas de gui com if has("gui running") mas não sei como remapear :x

desde já, obrigado

ps .: talvez o tag / termo remap esteja errado, mas eu não sei o termo correto, é por isso que o google não forneceu nenhuma ajuda.

   

Eu acho que a alternativa mais segura é usar uma abreviação de expressão:

 cnoreabbrev  x getcmdtype() == ":" && getcmdline() == 'x' ? 'bd' : 'x' 

Isso garantirá que a abreviação só seja expandida para bd quando :x for usado. Caso contrário, expanda para x .

Para mais ajuda:

 :h map- :h getcmdtype() :h getcmdline() 

Após uma inspeção mais aprofundada parece haver um plugin que faz exatamente isso por Hari Krishna Dara chamado cmdalias.vim . Ele usa uma variação da técnica acima.

Isso não é tão fácil quanto parece. :map não funciona com comandos e :command só aceita comandos que começam com uma letra maiúscula. Mas você pode usar :cabbrev :

 if has("gui_running") cabbrev x bd endif 

UPDATE:: :cmap poderia realmente ser usado:: :cmap x bd , mas não funciona direito: cada ocorrência de x em um comando é imediatamente substituída por bd .

EDIT: Esta questão é uma duplicata de Posso (re) mapear comandos Ex no vim? .