启动
vim \
移动光标
vim 键盘的很多快捷指令是对应不同的字符,要高效的使用vim 就需要理解操作所对应的原则
先定单位再定量
操作对象的范围计算公式为: 操作范围 = 操作次数 * 操作单位
如: 5h 命令左移5个字符,8w命令左右8个单位。
vim 中操作单位从小到大顺序 –相应的操作命令:
字符 – h, l
单词 – w, W, b, B, e
行 – j, k, o, ^, $, :n
句子 – (、)
段落 – {、}
屏 – H, M, L
页 – Ctrl-f, Ctrl-b, Ctrl-u, Ctrl-d
文件 – G, gg, :0, :$
字符: h,j,k,l
单词 :
- W/w 移动到下个单词开头
- B/b 移动到上个单词开头
- E/e 移动到光标所在的单词末尾
W E B 命令操作的单词是以空白字符分割的
行:
- o 移到当前行开头
- ^ 移到当前行第一个空字符
- $ 移动到当前行末尾
- :n 移动到第 n 行
句子:
- ) 移动到当前句子末尾
- ( 移动到当前句子开头
段落 :
- } 移动到当前段落末尾
- { 移动到当前段落开头
屏 :
- H 移动到屏幕第一行
- M 移动到屏幕中间
- L 移动到屏幕最后一行
页 :
- Ctrl-f 向前滚动一页
- Ctrl-b 向后滚动一页
- Ctrl-u 向前滚动半页
- Ctrl-d 向后滚动半页
文件:
- G 移动到文件末尾
- gg 移动到文件开头
- :0 移动到文件第一行
- :$ 移动到文件最后一行
文本编辑
字符:
x 删除光标位置的字符
c 更改当前字符并进入插入模式- s 替换光标位置的字符并进入插入模式
- i 在当前位置的字符之前进入插入模式
- a 在当前位置的字符之后进入插入模式
单词(目前的我看来智障般的设定2018.5.12)
- cw/ cW 删除当前单词从光标开始的部分并进入插入模式
- dw/dW 删除当前单词从光标开始部分但不进入插入模式
- cb/cB 删除当前单词从光标所在位置至单词开始的部分并进入插入模式
- db/dB 删除当前单词从光标所在位置至单词开始部分但不进入插入模式
行
dd 删除当前行
d0 删除从当前光标开始到行末的内容删除至行头I 在当前行的行首进入插入模式
A 在当前的行尾进入插入模式
o 在当前行下方另起一行进入插入模式
O 在当前行上方另起一行进入插入模式
句子
- d) 删除当前句子从光标位置开始到句末的内容
- d( 删除当前句子从光标位置开始到句首的内容
段落
- d} 删除当前段落从光标位置开始到段首的内容
- d{ 删除当前段落从光标位置开始到段末的内容
复制与粘贴
- yw 复制当前单词从光标开始的部分
- yy 复制光标所在行的所有字符
- p 将最后一个删除或复制文本放在当前字符
- P 将最后一个删除或复制文本放在当前字符之前
撤消与重做和删除
- u 撤消更改
- Ctrl-R 重做更改
- dd 删除整行
- d + $ 从某处删到行尾
重复操作
- . 重复上次操作
. 为小数点(dot)
交换相邻字符或行
- xp 交换光标位置的字符和它右边的字符
大小写转换
- ~ 将光标下的字母大小写反向转换 (需加shift 方可食用)
- guw 将光标所在的单词变为小写
- gUw 将光标所在的单词变为大写
- guu 光标所在的行所有字符变为小写
- gUU 光标所在的行所有字符变为大写
- g~~ 光标所在的行所有字符大小写反向转换
显示字符内码
- ga 显示光标所在字符的内码(包括十进制码,十六进制码以及八进制码)
文本搜索和替换
搜索
- / 在文件中向前搜索
- ? 在文件中向后搜索
搜索翻页
- N往前翻
- n 往后翻
- 可使用正则表达式
- 可配合操作数使用,比如 3/str 向前搜索字串 str 并将光标移到第三个找到的串
快速搜索
- * 在文件中向前搜索当前光标所在的单词
- # 在文件中向后搜索当前光标所在的单词
显示搜索命令历史
- q/ 显示搜索命令历史的窗口
- q? 显示搜索命令历史的窗口
- q: 显示命令行命令历史的窗口
替换
$s/class/clazz/g
量词要加反斜杠 如 /class\w+ 表示 class后面还能跟内容 如果单打 + 表示 + 号
%是范围
/class/clazz 把class 替换成 clazz
g 表示范围 gloabl