vim是一个文本编辑神器, 长时间没用生疏了,这篇文章整理了一下vim常用操作和快捷键
注释:
[] 表示括号内容可有可无
() 表示括号内容可以跟前面一个字符替换
一、vim的几种模式
普通模式
1)光标移动
hjkl 表示 左下上右(最基础)
行内
w(b) 移动到下(上)一单词首字母
[g]e 移动到[上]下一单词尾字母
0(^) 移动到行首(非空字符)
$(g_) 移动到行尾(非空字符)
n| 移动到当前行第n列
f(F)w: 移动到下(上)一个w出现的地方
t(T)w: 移动到下(上)一个w出现地方的前(后)一个字符
行间
G 跳转到最后一行
gg: 跳转到第一行
nG(gg) 或:n 跳转到第n行行首(非空字符)
{(}) 跳转到段首(尾)
+(-) 移动到下(上)一行行首
翻页
ctrl+b 向下翻页
ctrl+f 向上翻页
查找
/word 查找word 第一个位置
n(N) 查找下(上)一个
*(#) 向下(上)查找光标处的单词
2)删除
[n]x(X): 删除光标(前)n个字符
d: 删除
[n]dd: 删除光标所在行向下共n行
d[1]G: 删除光标所在行到[第一行]最后一行
d$(0): 删除光标到行尾(行首)
D: 删除到行尾
dw: 删除光标到单词结束
d[n]a(i)w: 删除光标所在的n个单词,(不)包括单词后的空格
d[n]j(k): 删除当前行及向下(上)n行;jk 也可替换成hl, 表示向左向右n个字符
d{(}): 删除到段落开头(末尾)
3) 复制
y(Y) 用法同删除d
4) 粘贴
p(P): 在光标后(前)插入粘贴板内容
插入模式
普通模式键入以后字符自动变为插入模式
i(a): 光标所在字符前(后)插入 I(A): 光标所在行首(尾)插入 o(O): 光标所在行下(上)面插入新行 r: 光标所在处的字符替换为下一个键入字符 R: 替换模式, 连续替换光标所在处字符为后续键入字符,直至退出 c(C): 用法同删除d,在删除的同时进入插入模式 (超级有用)
s(S): 删除字符(此行)并插入,相当于cl(c)
-- 以下操作还是普通模式
x(X): 删除光标处(左边)字符,相当于dl(h)
命令行模式
普通模式键入 : 进入命令行模式
命令行模式按键 esc 退出
set (no)nu : (不)显示行号
wq: 保存退出
q! 不保存退出
r!command 导入命令行输出(在当前文件中导入系统文本内容或者路径很有用,如 r!echo /usr/local/jdk_1.8)
!command 执行shell命令
块模式(不常用)
v 配合移动命令移动
v(V): 配合 hjkl选中
ctrl+v: 选中列
二、小技巧
清除文本所有内容
命令行模式输入以下3中方式均可:
1,$d
ggdG
%d
特殊方式:
echo '' > a.txt
连续行注释(加#号)
第一种方法:
光标移动到需要注释开始行行首
ctrl+v 进入块模式
向下移动光标到添加注释的末尾航
键入 I
输入 #
按esc 退出
第二种方法:
键入: 进入命令行模式
2,5s/^/# / (意思为2到5行行首添加#)
g/^/2,5s/# /
第三种方法: (sed)
sed -i '2,5s/^/# /' filename
第四种方法:(宏)
光标移动到需要注释开始行
键入qa
键入I
键入 #
按键 esc 进入普通模式
键入q 退出宏录制模式
jV2j
命令行模式 :'<,'>normal @a
按键组合(提高效率)
diw/daw/ciw/caw 等等删除完整一个单词,w可替换为别的词()/}/)/]/>/'/"/`/t)
dt(w) : 从光标处删除到下一个w的位置
gu(U)[u/aw/j...] 转换为大小写
xp 调换前后字符
ddp 调换前后行
insert模式下:
ctrl+h :删除前一个字符(同退格键)
ctrl+w :删除前一个单词
ctrl+u :删至行首