vim(vimsual)是Linux/UNIX系列OS中通用的全屏编辑器
特点:
-vim是个强大的编辑器
-vim非常小
-vim稍微有些难学
|
vim分为两种状态,即命令状态和编辑状态, 在命令状态下,所键入的字符系统均作命令来处理,如:q代表退出,而编辑状态则是用来编辑文本资料的。当你进入vim时,会首先进入命令状态。在命令状态下,按”i”(插入)或”a”(添加)可以进入编辑状态,在编辑状态,按ESC键进入命令状态。 |
在命令状态下,有如下一些常用命令:
新增:
a 从光标后面开始添加文本
A 从光标所在行的末尾开始添加文本
插入:
i 从光标前面开始插入文本
I 从光标所在行的开始处插入文本
删除与修改:
x 删除光标处的字符
dd 删除光标所在的整行
3dd 删除光标所在行以及下面的两行
D 删除光标到行尾的文本,常用语删除注释语句 (d$)
u 撤销上次操作
|
光标移动:
^ 光标移动到行首
$ 光标移动到行尾
Ctrl+d 向下翻半页
Ctrl+f 向下翻一页
Ctrl+u 向上翻半页
Ctrl+b 向上翻一页
gg 光标定位到文档头
G 光标定位到文档尾
H 光标定位到当前页首
L 光标定位到当前页的最后一行的行首
w 光标往后移一个字
b 光标往前移一个字
[n]+ 光标向后移动n行,[n]表示一个整数 10+
[n]- 光标向前移动n行,[n]表示一个整数 10-
[n]G 光标定位到第n行行首, [n]表示一个整数 20G
[n]$ 光标定位到第n行行尾
|
查找与替换:
/[str] 查找字符串str,[str]表示要查找的字符串回车后会加亮显示所有找到的字符串,接着命令 n 移动到下一个找到的字符串,命令 N 移动到上一个找到的字符串
eg :/hello (:noh 取消查找到的高亮标记)
|
部分替换: (只能替换光标之所在的行,只能替换一个)
:s/[src]/[dst] /i忽略大小写 /g全部匹配
eg :s/hello/world/i //替换当前光标所在行的第一个找到的hello为world
:s/hello/world/ig //光标所在行的所有hello,区分大小写,全部替换为world。
(i只会修改每行找到的第一个,g会全部修改)
:3,6 s/[src]/[dst]/ig(3-6行中找)
eg :3,6 s/hello/world/g
(有一个问题,哪怕是一个单词中包含[src]的,也会替换)
:3,$ s/hello/world/g
// 替换第三行到文本最后一行中的所有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 文档退出保存
|
其他:
:help 命令 查看该命令的帮助提示
:%!xxd 十六进制模式
:%!xxd –r 返回文本模式 中间有一个空格的
如果在编辑过程中不小心按了Ctrl+s,vim会处于僵死状态,按 Ctrl+q 可以恢复。
|
执行 vim +3 main.c //表示定位到main.c的第3行
执行 vim +/printf main.c //表示定位到第一个printf处
|
在命令模式下输入 :new 2.c //表示再打开一个vim,是横向的 用 vnew 2.c //表示再打开一个vim,是纵向的 表示纵向也可以通过: split vsplit sp vsp //这几个命令都是把当前打开的文件分开,不会创建新的文件 两个窗口之间进行切换的方式:Ctrl+w 接着按 w 切换 在文件间切换: ctrl+6 左边显示下一个文件(同时打开多个) :bn 显示下一个文件 :bp 显示上一个文件 |
在命令模式中输入 gg=G 可以自动对齐
|
sed: 管道查找替换程序
cat a.txt | sed 's/aa/bb' > b.txt //将a.txt中的aa替换成bb并重定向输出到b.txt中。
|
命令行中输入的 '|' 是用来隔开多个命令的,不然前面的命令会把后面的指令当成参数去了
ctrl + p 写代码的时候联想
" : %s/^M$//g "
%指匹配整个文件
s是置换的意思
^M要用ctrl+v+m 组合键敲入
$表示匹配行尾的内容
g表示每行中匹配到的内容都要置换
|
windows中的文件复制到LINUX中每行结尾多一个 ^M 原因是windows中换行是"\r\n",而LINUX中是"\n";所以显示一个异常字符,之所以要 ctrl+v+m 这样输入这个字符,是因为这个字符本来表示空; |
vim 批量操作: eg: 批量注释 |
▶用v进入virtual模式
▶用上下键选中需要注释的行数
▶按Control+v(win下面ctrl+v)进入列模式 (可以直接ctrl+v操作,免了前面两步)
▶按大写"I"进入插入模式,输入注释符"#"或者是"//"
▶然后立刻按下ESC(两下)
删除注释是选中按 d
|