vim合理修改快捷键映射

很多键盘键位,按 ESC 不方便,我们可以映射组合键 成快捷键

网上一个教程就是用 ctrl+ [ 映射成 esc

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
"" Source your .vimrc
"source ~/.vimrc

"" -- Suggested options --
" Show a few lines of context around the cursor. Note that this makes the
" text scroll if you mouse-click near the start or end of the window.
set scrolloff=5

" Do incremental searching.
set incsearch



"" -- Map IDE actions to IdeaVim -- https://jb.gg/abva4t
"" Map \r to the Reformat Code action
"map \r <Action>(ReformatCode)

"" Map <leader>d to start debug
"map <leader>d <Action>(Debug)

"" Map \b to toggle the breakpoint on the current line
"map \b <Action>(ToggleLineBreakpoint)


" Find more examples here: https://jb.gg/share-ideavimrc



" 设置 tab缩进"

set tabstop=4 " 设置Tab长度为4空格
set shiftwidth=4 " 设置自动缩进长度为4空格
set autoindent " 继承前一行的缩进方式,适用于多行注释
set smartindent
set laststatus=2
"显示命令"
set showcmd

" 开启实时搜索
set incsearch
" 搜索时大小写不敏感
set ignorecase
syntax enable

set nu

set showmatch



set timeoutlen=500


set clipboard+=unnamed

 


" 按f 直接进入 行首, t 表示 tail ,到行尾

map f 0
map t $


"H 表示跳到行首,并且进入插入模式,L表示跳到行尾进入追加模式
map H  0i
map L $a

" H 直接跳到行首
map K  gg

" shift + l 跳到文件末尾
map J G


set whichwrap=h,l,b,s,<,>,[,]



"关闭讨厌的铃声

set vb t_vb=

 

imap jk jk


" insert模式下 ee = esc退出  
imap ee <Esc>
imap <C-[> <Esc>

" insert模式 按 qq = esc
imap qq <Esc>



" normal模式 按 c 转命令模式
nmap c :


nmap [ <PageUp>
nmap ]  <PageDown>



" 编译代码命令

func! CompileCodeFile() 
	exec "w"
	if &filetype == 'c'
		exec "!g++ % -o %<"
	elseif &filetype == 'cpp'
		 exec "!g++ % -o %<"
	endif    
		exec "!echo '-----------compile OK---------------'"
endfunc

func! RunCodeFile()
	exec "silent !echo '------------- runCode -------------------'"
	if &filetype == 'cpp'
		exec "!%:r"
	endif
endfunc

map <F8>  :call CompileCodeFile() <CR>
map <F9>  :call RunCodeFile()<CR>
map <F10> :call CompileCodeFile()<CR> :call  RunCodeFile()<CR>

" f10 运行 ,f9编译




" ctrl+n 可以代码补全"

filetype on
 

自定义映射的 api

参考学习教程

递归映射与非递归映射

  1. 递归映射 会递归的按照命令的定义去解释
  2. 非递归 只解释一次

非递归 就是 noremap

  • nnoremap/ vnoremap/inoremap

任何时候我们都应该用非递归映射

自定义宏

https://www.imooc.com/video/19455