在刷算法的时候发现采用vim键盘方式码代码方便很多,之前总学了忘,考虑这次总结一些按自己的使用习惯来说常用的.
定位
h: 左
l: 右
j: 下
k: 上
0: 该行首
$: 该行尾
gM: 本行中点
gg: 最开头
G: 最末尾
gm: 屏幕行中点
w: 向前一个单词的开头
W: 向前一个空白隔开的字串
e: 向前一个单词的词尾
E: 向前一个空白隔开的字串结尾
b: 向后一个单词的开头
B: 向后一个空白隔开的字串
ge: 向后一个单词的词尾
): 向前一个句子
(: 向后一个句子
}: 向前一个段落
]]: 向前一个小节
]}: 向后一个未闭合的{
]); 向前一个未闭合的(
[(: 向后一个未闭合的(
[{: 向后一个未闭合的{
%: 本行后一个括号/反括号/注释/if/else/等为孩子
H: 该行的首个非空白字符位置
]*: 向前一个注释的结束
[* : 向后一个注释的开头
f{char}: 右边该字符出现位置
F{char}: 左边该字符出现位置
t{char}: 至右边该字符出现之前
T{char}: 至左边该字符出现之前
;: 重复前一次f/F/t/T
,: 反方向重复前一次f/F/t/T
编辑
输入&修改
# 添加
i: 当前位置输入
I: 当前行最开头输入
a: 当前位置后输入
A: 当前行最末尾输入
o: 创建下方空行并输入
O: 创建上方空行并输入
# 特殊插入
:r [file]: 将文件file的内容插入到光标下
:r! [cmd]: 将shell下的命令输出插入到当前光标下
# 删除
x: 删除光标及之后字符
X: 删除光标及之前字符
dw/daw: 删除当前单词(包括空格)
d$: 从当前字符删除到行尾
d0: 从当前字符删除到行首
dd: 删除整行
D: 删除至行尾(行还在)
J: 与下一行合并
# 修改
r{char}: 替换当前字符
s: 修改单个字符
S: 修改当前行
~: 反转大小写并前进光标
c: 覆盖当前字符(输入前不会把那个字符删除,而是直接覆盖)
搜索
标记
m{a-zA-Z}: 标记当前行
`{a-z}: 跳转到当前文件中的特定标记
`0: vim前次退出的光标位置
``: 前次跳转前的位置
:marks: 跳转标记列表
可视
v: 以字符方式开始高亮
V: 以行方式开始高亮
aw: 选择一个单词
as: 选择一个句子
ap: 选择一个段落
ab: 选择一个块
a': 选择一个单引号字符串
a": 选择一个双引号字符串
a`: 选择一个反引号字符串