Created
March 30, 2019 23:51
-
-
Save goerz/36015f27c2a5423c64a5f9dc03865f2c to your computer and use it in GitHub Desktop.
Settings that solve some weird vim behavior like starting in REPLACE mode (put this at the end of your vimrc)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" Terminal fixes | |
" | |
" These originate from some linux distribution's system vimrc. I can't say | |
" that I understand the details what's going on here, but without these | |
" settings, I've had problems like vim starting in REPLACE mode for | |
" TERM=xterm-256color (neovim is fine) | |
if &term =~? 'xterm' | |
let s:myterm = 'xterm' | |
else | |
let s:myterm = &term | |
endif | |
let s:myterm = substitute(s:myterm, 'cons[0-9][0-9].*$', 'linux', '') | |
let s:myterm = substitute(s:myterm, 'vt1[0-9][0-9].*$', 'vt100', '') | |
let s:myterm = substitute(s:myterm, 'vt2[0-9][0-9].*$', 'vt220', '') | |
let s:myterm = substitute(s:myterm, '\\([^-]*\\)[_-].*$', '\\1', '') | |
" Here we define the keys of the NumLock in keyboard transmit mode of xterm | |
" which misses or hasn't activated Alt/NumLock Modifiers. Often not defined | |
" within termcap/terminfo and we should map the character printed on the keys. | |
if s:myterm ==? 'xterm' || s:myterm ==? 'kvt' || s:myterm ==? 'gnome' | |
" keys in insert/command mode. | |
map! <ESC>Oo : | |
map! <ESC>Oj * | |
map! <ESC>Om - | |
map! <ESC>Ok + | |
map! <ESC>Ol , | |
map! <ESC>OM | |
map! <ESC>Ow 7 | |
map! <ESC>Ox 8 | |
map! <ESC>Oy 9 | |
map! <ESC>Ot 4 | |
map! <ESC>Ou 5 | |
map! <ESC>Ov 6 | |
map! <ESC>Oq 1 | |
map! <ESC>Or 2 | |
map! <ESC>Os 3 | |
map! <ESC>Op 0 | |
map! <ESC>On . | |
" keys in normal mode | |
map <ESC>Oo : | |
map <ESC>Oj * | |
map <ESC>Om - | |
map <ESC>Ok + | |
map <ESC>Ol , | |
map <ESC>OM | |
map <ESC>Ow 7 | |
map <ESC>Ox 8 | |
map <ESC>Oy 9 | |
map <ESC>Ot 4 | |
map <ESC>Ou 5 | |
map <ESC>Ov 6 | |
map <ESC>Oq 1 | |
map <ESC>Or 2 | |
map <ESC>Os 3 | |
map <ESC>Op 0 | |
map <ESC>On . | |
endif | |
" xterm but without activated keyboard transmit mode | |
" and therefore not defined in termcap/terminfo. | |
if s:myterm ==? 'xterm' || s:myterm ==? 'kvt' || s:myterm ==? 'gnome' | |
" keys in insert/command mode. | |
map! <Esc>[H <Home> | |
map! <Esc>[F <End> | |
" Home/End: older xterms do not fit termcap/terminfo. | |
map! <Esc>[1~ <Home> | |
map! <Esc>[4~ <End> | |
" Up/Down/Right/Left | |
map! <Esc>[A <Up> | |
map! <Esc>[B <Down> | |
map! <Esc>[C <Right> | |
map! <Esc>[D <Left> | |
" KP_5 (NumLock off) | |
map! <Esc>[E <Insert> | |
" PageUp/PageDown | |
map <ESC>[5~ <PageUp> | |
map <ESC>[6~ <PageDown> | |
map <ESC>[5;2~ <PageUp> | |
map <ESC>[6;2~ <PageDown> | |
map <ESC>[5;5~ <PageUp> | |
map <ESC>[6;5~ <PageDown> | |
" keys in normal mode | |
map <ESC>[H 0 | |
map <ESC>[F $ | |
" Home/End: older xterms do not fit termcap/terminfo. | |
map <ESC>[1~ 0 | |
map <ESC>[4~ $ | |
" Up/Down/Right/Left | |
map <ESC>[A k | |
map <ESC>[B j | |
map <ESC>[C l | |
map <ESC>[D h | |
" KP_5 (NumLock off) | |
map <ESC>[E i | |
" PageUp/PageDown | |
map <ESC>[5~ | |
map <ESC>[6~ | |
map <ESC>[5;2~ | |
map <ESC>[6;2~ | |
map <ESC>[5;5~ | |
map <ESC>[6;5~ | |
endif | |
" xterm/kvt but with activated keyboard transmit mode. | |
" Sometimes not or wrong defined within termcap/terminfo. | |
if s:myterm ==? 'xterm' || s:myterm ==? 'kvt' || s:myterm ==? 'gnome' | |
" keys in insert/command mode. | |
map! <Esc>OH <Home> | |
map! <Esc>OF <End> | |
map! <ESC>O2H <Home> | |
map! <ESC>O2F <End> | |
map! <ESC>O5H <Home> | |
map! <ESC>O5F <End> | |
" Cursor keys which works mostly | |
" map! <Esc>OA <Up> | |
" map! <Esc>OB <Down> | |
" map! <Esc>OC <Right> | |
" map! <Esc>OD <Left> | |
map! <Esc>[2;2~ <Insert> | |
map! <Esc>[3;2~ <Delete> | |
map! <Esc>[2;5~ <Insert> | |
map! <Esc>[3;5~ <Delete> | |
map! <Esc>O2A <PageUp> | |
map! <Esc>O2B <PageDown> | |
map! <Esc>O2C <S-Right> | |
map! <Esc>O2D <S-Left> | |
map! <Esc>O5A <PageUp> | |
map! <Esc>O5B <PageDown> | |
map! <Esc>O5C <S-Right> | |
map! <Esc>O5D <S-Left> | |
" KP_5 (NumLock off) | |
map! <Esc>OE <Insert> | |
" keys in normal mode | |
map <ESC>OH 0 | |
map <ESC>OF $ | |
map <ESC>O2H 0 | |
map <ESC>O2F $ | |
map <ESC>O5H 0 | |
map <ESC>O5F $ | |
" Cursor keys which works mostly | |
" map <ESC>OA k | |
" map <ESC>OB j | |
" map <ESC>OD h | |
" map <ESC>OC l | |
map <Esc>[2;2~ i | |
map <Esc>[3;2~ x | |
map <Esc>[2;5~ i | |
map <Esc>[3;5~ x | |
map <ESC>O2A ^B | |
map <ESC>O2B ^F | |
map <ESC>O2D b | |
map <ESC>O2C w | |
map <ESC>O5A ^B | |
map <ESC>O5B ^F | |
map <ESC>O5D b | |
map <ESC>O5C w | |
" KP_5 (NumLock off) | |
map <ESC>OE i | |
endif | |
if s:myterm ==? 'linux' | |
" keys in insert/command mode. | |
map! <Esc>[G <Insert> | |
" KP_5 (NumLock off) | |
" keys in normal mode | |
" KP_5 (NumLock off) | |
map <ESC>[G i | |
endif | |
" This escape sequence is the well known ANSI sequence for | |
" Remove Character Under The Cursor (RCUTC[tm]) | |
map! <Esc>[3~ <Delete> | |
map <ESC>[3~ x |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment