记录下 vim 的操作,以前只知道很简单的功能, 完全是浪费vim强大的特性。这里主要分操作域(行内,多行,页面)来记录命令。
这些命令采自于这些文章:
1. Vim 使用进阶
2. 简明 Vim 练级攻略
3. Vi/Vim 使用进阶:目录
(1) 行内
移动
Line
0: 跳到行首
^: 到本行第一个不是blank字符的位置
$: 到本行行尾
Word
w: 到下一个单词的开头 (punctuation, 标点)
W: jump by words
e: 到下一个单词的结尾 (punctuation, 标点)
E: jump to end of words
b: jump backwards by words (punctuation)
B: jump backwards by words%: 匹配括号
*和#: 匹配当前的单词,移动到上一个和下一个
fx(Fx): 移动到当前行的下一个 x 处。x 可以是任意一个字母
tx(Tx): 和上面的命令类似,但是移动到 x 的左边一个位置
Sentence
(,) 跳转到上一个或下一个sentence
编辑
rx: 把光标下的字符替换成 x
J: 把下一行合并到当前行
剪切
D: 剪切从当前位置到行尾
x: 删除当前字符
X: 删除前一个字符p: 粘贴到光标后
P: 粘贴到光标前dw: 删除一个单词
cw: 删除一个单词,并进入到插入模式
d,c 的区别,需要多考虑下
d{motion}: 剪切 motion 命令跨过的字符到剪切板。比如 dw 会剪切一个单词,dfx, 将从当前光标剪切到下一个 x 之间到字符到剪切板
y{motion}: 和上面类似,不过是拷贝
c{motion}: 和 d{motion}, 不过最后进入到插入模式
多考虑: d,y,c+移动命令
(2) 多行
复制
- 2,9 co 11 从2行到9行都复制到11行 、
删除
- 2,23d 删除2到23行
cc, 删除一行然后进入编辑状态, cw 删除一个单词并进入编译状态
移动
{ : 跳到上一个空行
} : 跳到下一个空行
(3) 页面
screenwise
H: move to the Highest line on the screen
M: move to the Middle of the screen
L: move to the Lowest line of the screenzt: 把光标所在行移动到窗口的顶端
zz: 中间
zb: 底端
(4) 其它
撤销
u: 撤销上一个命令
ctrl+r: 恢复之前撤销的命令
重复
N 重复某个命令 n 次。
比如 10is[Esc], 是连续写10个s. 相当于10+i+s, 最后一定要按 Esc.
替换
s/xxx/yyy: 替换第一个 xxx 为 yyy
s/xxx/yyy/g: 替换整行的 xxx 为 yyy
%s/xxx/yyy/g: 整个文件所有的 xxx 替换为 yyy
查找并对所有查找进行操作
:g/^#/d: 删除所有以 # 打头的行
:g/^$/d 删除所有空行
大小写切换
U: upper case of marked area
~: switch case
到最后一个编辑处
` : go to line last edited
补全
ctrl+n: next completion
ctrl+p: previous completion
调换
xp: transpose to letters
ddp: 调换上下行的位置
indent
>>: indent line one column right
\<<: indent line one column left
\==: auto-indent current line
取消高亮
nohls
取消序号
set nonumber
数字增减1
Ctrl+a: increase 1
Ctrl+z: decrease 1
* help *
查看 help 命令: 比如 help j