vim change :x function to delete buffer instead of save & quit

remap, vim

Solution

I find the safest alternative is to use an expression abbreviation:

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

This will ensure the abbreviation will only be expanded to `bd` when `:x` is used otherwise just expand to `x`.

For more help:

:h map-<expr>
:h getcmdtype()
:h getcmdline()

Upon further inspection there appears to be a plugin that does exactly this by Hari Krishna Dara called cmdalias.vim. It uses a variation of the technique above.

Problem

I want to set `:x` in vim gui-mode to `delete buffer` because I always kill the whole gvim, which is kind of annoying. I know i can specifically set gui problems with `if has("gui running")` but don't know how to remap `:x` thanks in advance ps.: maybe the tag/term `remap` is wrong but I don't know the correct term, that's why google didn't provide any help at all.

Original source

Related problems