vim命令编辑器

  vi和vim是linux中一个强大的文本编辑器,vim是vi的升级版。在vim中有三种模式分别是命令模式、输入模式、末行模式。用vim打开一个文件首先进去的是命令模式。

vim模式

1.命令模式常用命令

命令 命令解释
G 光标移动至文本最末行
gg 光标移动至文本最顶端
ngg(n是数字) 光标移动到第n行
0或shift+6 光标移动至本行行首(^)
shift+4 光标移动至本行行尾($)
x 向后删除一个字符
X 向前删除一个字符
dd 删除光标所在行
ndd(n是数字) 删除光标所在行开始的以下n行
dG 删除光标开始行及以下所有行
D 在光标所在行删除光标以及光标之后的行内容
yy 复制光标所在行
nyy(n是数字) 复制从光标行开始的n行
yG 复制光标开始及以下的所有行
p(小写字母) 将之前删除或复制的数据粘贴到光标之后行
P(大写字母) 将之前删除或复制的数据粘贴到光标之前行
u 撤销上一步的操作
r 替换光标所在的字符,只替换一次
R 一直替换光标所在的字符,一直到按下ESC键
ctrl+f 向下翻页
ctrl+b 向上翻页

2.命令模式进入输入模式常用命令

命令 命令解释
i 从当前光标前开始插入字符
a 从当前光标后开始插入字符
I 在当前行行首插入字符
A 在当前行行尾插入字符
o 在当前行下面插入新的一行
O 在当前行上面插入新的一行

3.末行模式常用命令

命令 命令解释
:w 保存不退出文档
:q 退出不保存
:wq 保存并退出
:q! 强制退出不保存
:wq! 强制保存并退出
:x 保存并退出
命令 命令解释
:number 跳转到对应的行
/word 搜索文件内容中包含word的字符串
n 在匹配的高亮字符串中逐个向下跳转
N 在匹配的高亮字符串中逐个向上跳转
:nohl 取消搜索
命令(查找与替换)
:n1,n2 s#word1#word2#g 查找n1和n2行之间所有word1字符串并替换为word2
:1,$ s#word1#word2#g 查找全局所有word1字符串并替换为word2(1,$表示所有行)
:% s#word1#word2#g 查找全局所有word1字符串并替换为word2(%表示所有行)
:% s#word1#word2#gc 加上c作用是在替换前需要用户确认
命令(读入文件)
:w a.txt 另存为新文件a.txt
:1,3 w bb.txt 将1到3行另存为bb.txt
:r cc.txt 将文件cc.txt读入到光标所在行之后
:5 r dd.txt 将文件dd.txt读入到第五行之后

4.末行模式-环境变量

1.临时修改

命令 命令解释
:set nu 显示行号
:set ic 忽略大小写,在内容搜索时使用
:set ai 自动缩进
:set list 显示制表符(可以看到文件内容中看不到的内容比如空格、tab键等)
:set nonu 取消显示行号,其他的都是在前面加“no”取消

2.永久生效

  通过命令修改的都是临时生效的,关闭后再打开vim则属性消失。如果想永久生效,则需要修改配置文件。在linux中有两个配置文件

针对环境 文件名 优先级
个人用户 ~/.vimrc
全局所有用户 /etc/vimrc

5.视图模式

在命令模式下按‘ctrl+v’进入可视块模式(VISUAL BLOCKA)选选中需要改变的行或块
1.插入:按住shift+i 进入编辑模式,输入内容例如‘#’,按ESC结束,则批量在选中的每行开始插入#
2.删除:选中内容后,按‘x’或者‘d’键删除即可
3.替换:选中需要替换的内容后,按下r然后直接输入要替换的字符
在命令模式下按‘shift+v’ 进入可视行模式(VISUAL LINE)选中需要改变的行
1.复制:选中后按y键
2.删除:选中后按d键

6.文件对比

  在生产中,有时需要对两个相似的文件进行对比,查找两个文件的不同之处,linux给了一个解决方案,可以用vimdiff命令进行对比。