一、介绍

  vi 和 vim 是 Linux 下的一个文本编辑工具。
  vim 编辑器中设置了三种模式:普通模式、编辑模式和末行模式,每种模式又分别支持多种不同的命令快捷键,要想高效率地操作文本,就必须先搞清这三种模式模式的切换方法和各个模式的操作用法。
  普通模式: 主要是控制光标移动,可对文本进行复制、粘贴、删除等工作。使用 vim 编辑一个文件时,一进入该文件就是普通模式了。
  编辑模式: 主要进行文本内容编辑和修改。想要编辑文件就必须从普通模式进入编辑模式,只需按(i、a、o、I、A、O)其中一个键即可,当然不同的键有不同效果,后面会介绍到。当进入编辑模式时,会在屏幕的最下一行会出现 "INSERT" 标记。编辑模式回到普通模式只需要按键盘左上方的 ESC 键即可。
  末行模式: 主要用于保存或退出文本,当然还有搜索、替换等一些操作。在普通模式下,输入 ":" 即可进入命令模式。

二、普通模式

1、命令光标跳转和翻页

命令 作用
]] 或者 G 光标跳转至末端
[[ 或者 gg 光标跳转至顶端
Ngg 光标跳转至当前文件内的第N行
$ 光标跳转至当前光标所在行的尾部
^ 或者 0 光标跳转至当前光标所在行的首部
ctrl+f 往下翻页
ctrl+b 往上翻页

2、文件内容操作

命令 作用
dd 删除(剪切)光标所在整行
5dd 删除(剪切)光标处开始的5行
dG 删除当前光标所在行及以后的所有行
D 删除当前光标及光标以后的内容
x 删除当前光标标记往后的字符
X 删除当前光标标记往前的字符
yy 复制光标所在整行
5yy 复制光标处开始的5行
p 将之前删除和复制的内容粘贴到光标下一行
P 将之前删除和复制的内容粘贴到光标上一行
u 撤销上一步操作
r 替换当前光标标记的单个字符
R 进入REPLACE模式,连续替换,ESC结束


三、输入模式

进入输入模式的方式:

命令 作用
i 进入编辑模式,光标不做任何操作
a 进入编辑模式,光标后移一位
o 进入编辑模式,在当前光标下面创建一个空行
I 进入编辑模式,并且光标会跳转至本行的首部
A 进入编辑模式,并且光标会跳转至本行的尾部
O 进入编辑模式,在当前光标上面创建一个空行


四、末行模式

1、文件保存和退出

命令 作用
:w 保存
:w! 强制保存
:q 退出
:q! 强制退出
:wq 和 :wq! 保存退出 和 强制保存退出
:X 先保存,再退出
ZZ 保存并退出

2、文件内容替换

命令 作用
:s/one/two 将当前光标所在行的第一个one替换成two
:s/one/two/g 将当前光标所在行的所有的one替换成two
:1,5s/one/two/g 将1-5行的所有one替换成two
:%s/one/two/g 将整个文本中所有的one替换成two
:%s/one/two/gc 将整个文本中所有的one替换成two,并提示是否需要替换

3、set设置选项

命令 作用
:set nu 显示行号
:set ic 忽略大小写
:set ai 自动缩进,对每行按与上行同样的标准进行缩进
:set list 显示制表符(空行、tab)
:set nohlsearch 取消高亮,本次内容编辑取消高亮,再搜索不会高亮显示,下次编辑无效。只取消本次搜索关键字高亮使用 :nohlsearch,可使用简写 :noh
:set no[ nu , ic , ai , list ] 取消设定

4、文件内容另存和读入

命令 作用
:w /root/test.txt 将所有内容另存为/root/test.txt文件中
:r /root/test.txt 读入/root/test.txt文件内容到当前光标下行
:5r /root/test.txt 读入/root/test.txt文件内容到当前文件第5行下面

5、文件内容查找

命令 作用
/string 在文本中从上至下搜索该字符串
?string 在文本中从下至上搜索该字符串
n 按搜索到的内容依次往下查找
N 按搜索到的内容依次往上查找
:number 跳转到对应行号

四、扩展

1、可视模式

命令 作用
v 进入可视模式,可进行字符选择,再v取消
Ctrl+v 可视块模式
1.插入:按shift+i进入编辑模式,输入需要插入的字符,结束按ESC键。
2.删除:选中内容后,按x或者d键删除。
3.替换:选中需要替换的内容,按下r键,然后输入替换后的内容。
Shift+v 进入可视行模式;y键复制,d键删除

2、使set设定永久生效

[root@cp ~]# vim ~/.vimrc 
set nu
注意:~/vimrc 个人环境变量优先级高于/etc/vimrc 全局环境变量
          如果个人vim环境没有配置,则使用全局vim环境变量配置。
          如果个人vim环境和全局环境变量产生冲突,优先使用个人vim环境变量。

3、同时编辑多个文件

[root@cp ~]# vim -o test1.txt test2.txt       # 水平分割
[root@cp ~]# vim -O test1.txt test2.txt       # 垂直分割

            # ctrl+ww文件间切换

4、文件对比,差异部分高亮显示

[root@cp ~]# vimdiff test1.txt test2.txt
  456                                      |  456                                     
  aaa                                      |  bbb                                     
  ~                                        |  ~                                       
  ~                                        |  ~                                       

5、vim非正常退出处理方法

假设打开test1.txt文件,vim被非正常关闭,需要删除同文件名的.swap文件即可解决。

[root@cp ~]# rm -rfv .test1.txt.swp 
removed ‘.test1.txt.swp’

发表评论

验证码: + 34 = 44