一:命令状态下, 有如下一些常用命令:
新增: a 光标后面添加文本 A 光标所在行末尾添加文本
插入: i 光标前面插入文本 I 从光标所在行的开始处插入文本
删除与修改:
x 删除光标处的字符 dd 删除光标所在的整行
3dd 删除光标所在行以及下面的两行
D 删除光标到行尾的文本, 常用于删除注释语句 (d$)
光标移动:
^ 光标移动到行首 $ 光标移动到行尾
Ctrl+d 向下翻半页 Ctrl+f 向下翻一页
Ctrl+u 向上翻半页 Ctrl+b 向上翻一页
gg 光标定位到文档头 G 光标定位到文档尾
H 光标定位到当前页首 w 光标往后移一个字
b 光标往前移一个字
L 光标定位到当前页的最后一行的行首
查找与替换:
/[str] 查找字符串 str 接着命令 n 移动到下一个找到的字符串,
命令 N 移动到上一个找到的字符串
部分替换:(只能替换光标之所在的行)
:s/[src]/[dst] /i 忽略大小写 /g 全部匹配
eg : s/hello/world/ig 只能替换一行
eg: 3,6 s/[src]/[dst]/ig( 3-6 行中找) 3,6 s/hello/world
全部替换:
%s/[src]/[dst]/g 将文档中所有 src 的字符串替换为 dst 字符串
:%s/^ //g 将文档每一行的行首的空格去掉
块操作:
v 可视化块选择状态, 选中块之后, 可以对块进行删除(d),复制(y),剪
切(x)
yy 复制光标所在的整行
[n]yy 从光标开始往下复制 n 行,[n]表示一个整数
p 将复制后的文本粘贴到光标处
u 撤销上次操作
结束编辑:
:q 在未修改文档的情况下退出
:q! 放弃文档的修改, 强行退出
:w 文档存盘
:wq 文档存盘退出 也可以: x 保存退出
跳转:
括号匹配:
% 可以让光标从它当前所在的括号跳转到与它相匹配的括号上去, 对花括号和
圆括号, 方括号都有效, 常用于手工检查括号是否匹对.
标示位置
你可以在档案□做些标记再随时返回被标记的位置.
m char (MARK) 把这个地方标示成 char
' char (quote character) 跳到被标为 char的那一行
'' (按两次') 回到刚才的位置
char 可以是小写的 a-z中的任一个 . 一个标记在除了下面的这两种情况
外会一直存在
1) 重覆使用相同的标示 char .
或 2) 删掉了被标示的那一行.
文字段落
有时候一段一段的移动游标会比较方便.我们可以用 {,},(,) 来达到这些功能
{ (左大括号) 跳到上一段的开头
} (右大括号) 跳到下一段的的开头.
( (左小括号) 移到这个句子的开头
) (右小括号) 移到下一个句子的开头
[[ 跳往上一个函式
]] 跳往下一个函式
其他:
:%!xxd 十六进制模式 :%!xxd –r 返回文本模式
若不小心按了 Ctrl+s, vim 会处于僵死状态, 按Ctrl+q 可以恢复。
vim +3 main.c //表示定位到 main.c 的第 3 行
vim +/main main.c //表示定位main.c的第一个main 处
命令模式下输入:new 2.c //表示再打开一个 vim,是横向的
用vnew 2.c 表示纵向
两个窗口之间进行切换的方式: Ctrl+w, w
在命令模式中输入 gg=G 可以自动对齐
set nu显示行号,set nonu关闭行号
sed: 管道查找替换程序
cat a.txt | sed 's/aa/bb/' > b.txt //将 a.txt 中的 aa 替换成 bb
并重定向输出到 b.txt 中
让终端有颜色,添加 .bashrc 里面下面的语法:
export PS1="\[\e[37;1m\][\[\e[32;1m\]\u\[\e[37;1m\]@\h \[\e[36;1m\]\w\[\e[0m\]]\\$>"