Search code examples
vimxterm

VIM: set term=xterm changes <BS> to <Del>, is it reversible?


I have added set term=xterm to my vimrc to be able to use 256-color vim schemes in terminal, but it comes at a price (at least for me). It also replaces (sort of) the BackSpace with Delete (i.e. BackSpace starts to delete forward just like Delete does) in insert mode and makes it "BackSpace" instead of moving left (or h) in normal mode. I have nothing against Ctrl-H as a way "to Backspace", but I simply don't want to have two delete buttons and ability "to BackSpace" (delete backward) in normal mode.

How can I reverse that change while retaining the setting I need?

PS I've read :h CTRL-h and a bit of :h xterm, but I couldn't find the solution.


Solution

  • Vim's inoremap and nnoremap commands can be used to adjust how keys are interpreted in Vim.

    A solution is documented here for your specific context: https://conemu.github.io/en/VimXterm.html

    The relevant quote: "If you have problems with BS in Vim (BS acts like Delete key) under ConEmu when term=xterm, you may try to remap BS key:

    inoremap <Char-0x07F> <BS> 
    nnoremap <Char-0x07F> <BS>
    

    "

    In general, when a key does not do what you want, the trick is to find out what it actually sends to Vim. Sometimes hitting Ctrl-V followed by that key in insert mode might help figure it out. Then inoremap and nnoremap as shown above can be used to reassign it to the behaviour you want in insert and normal modes, respectively.