-
vim(vimsual)是Linux/Unix系列OS中通用的全屏编辑器。
vim 简介
vim的模式
- vim分为3中模式:普通(命令)模式,编辑模式和视觉模式。在命令模式下,所键入的字符系统均会按照命令来处理,如:q代表退出,而编辑状态则是用来编辑文本内容的。当你进入vim时,会首先进入命令模式。
- 左下角有INSERT字样就是代表当前为编辑模式,有VISUAL的字样就是视觉模式,否则就是命令模式。
- 从命令模式切换到编辑模式,有如下一些常用命令:
- a 从光标后面开始添加文本(表示新增append)
- A 从光标所在行的末尾开始添加文本
- i 从光标所在位置的前面开始插入文本(i表示插入insert)
- I 从光标所在行的开始处位置插入文本
4.按下ESC按键,可以从编辑模式切换到命令模式。
vim内常用的命令操作
删除与修改
x 删除光标处的字符
dd 删除光标所在的整行
3dd 删除光标所在行以及下面的两行(一共删除3行)
D或d$ 删除光标到行尾的文本,常用于删除注释语句(等价于d$)
d^ 删除光标到行首的文本
dw 删除一个字
d3w 删除三个字
yy 复制光标所在的整行
[n]yy 从光标所在开始往下复制n行,[n]表示一个整数
p 将复制的文本粘贴到光标处
u 撤销上次的操作
光标移动
^ 光标移动到行首
$ 光标移动到行尾
ctrl+d 向下翻半页(down)
ctrl+f 向下翻一页(forward)
ctrl+u 向上翻半页(up)
ctrl+b 向上翻一页(backward)
gg 光标定位到文档头部
G 光标定位到文档尾部
H 光标定位到当前页首(head)
L 光标定位到当前页的最后一行的行首(lastline)
w 光标往后移一个字(word)
b 光标往前移一个字(block)
[n]+ 光标向后移动n行,[n]表示一个整数,例如10+
[n]- 光标向前移动n行,[n]表示一个整数,例如10-
[n]G 光标定位到第n行行首,[n]表示一个整数 ,例如20G
查找与替换
/[str] 查找字符串str,[str]表示要查找的字符串
回车后会高亮显示所有找到的字符串,接着输入n移动到下一个找到的字符串,输入N移动到上一个找到的字符串。
:s/[src]/[dst]/[i忽略大小写][g处理本行中所有的匹配项] 用字符dst替换字符src
例如:s/hello/world/ig 将一行中的world全部替换为hello
:x,y s/[src]/[dst]/ig 在x-y行中找
例如:3,6 s/hello/world 在3-6行里面,找到第一个hello替换为world
:%s/[src]/[dst]/g 将文档中所有src字符串替换为dst字符串
:%s/^ //g 将文档每一行的行首的空格去掉
:%s/^\t//g 将文档每一行的行首的制表符去掉
思考:
1.如何使用替换命令注释所有块内代码?
2.如何使用替换命令转换实现制表符和4个空格之间的转换?
可视模式
v 进入可视模式
ctrl+v 进入竖向选择模式
进入可视模式后,可以使用光标移动指令来移动光标,并且会选中区域。
批量注释代码,具体步骤如下:
首先按下ctrl+v,竖选选中要注释的行
输入I(注意是大写的I,表示在选中区域的前方),然后输入//
再按下ESC按键,就会看到所选中的行被注释了。
文档保存及退出
:q 在未修改文档的情况下退出
:q! 放弃文档的修改,强制退出
:w 写入文档
:wq 写入文档并退出
:x 功能和:wq一样,区别在于
:wq 强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。
:x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。
其他操作
:help 查看该命令的帮助提示(并不常用,当不小心按到F1时,可以通过:q进行退出)
:%!xxd 十六进制模式
:%!xxd -r 返回文本模式,注意中间有一个空格
注意,如果在vim编辑状态时不小心按了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(连续按两次w)进行两个窗口之间的切换
多标签
:tabnew 文件名 再打开一个vim标签
gt 切换到下个标签
gT 切换到上个标签
代码格式对齐
使用 = 可以进行代码对齐
gg=G 对齐全文件
gg=10gg 对齐第1行到第10行
在可视模式选中代码块之后,再按下=也能对齐代码块。
总结
基本上,vim命令是保持“操作”、“参数”、“对象”的基本结构。
操作包括了g(跳转),d(删除),c(change),y(yank拷贝)等等
参数包括了i(之前),a(后面),t(to),数字等等
对象包括了w(单词),s(句子),b(块),)(句子),} (块)等等
例如,修改括号内的内容:ct)