前言

Vim 文本编辑器是Linux系统中非常常用的文本编辑器,是Vi编辑器的增强版。一般Linux或unix系统都会自带该编辑器,如果没有自带,可以使用命令: sudo apt-get install vimyum install vim 进行安装。

vim-editor

操作模式

基本上 vi 可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

1) 命令模式(command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式、底行模式下。

2) 插入模式(Insert mode)
只有在插入模式下,才可以做文字输入,按ESC键可回到命令模式。

3) 底行模式(last line mode)
保存文件或退出vim,也可以设置编辑环境,如寻找字符串、列出行等。
不过一般我们在使用时把vim简化成两个模式,就是将底行模式也算入命令模式。

新建、打开、保存、退出文件

vim filename //如果文件存在则打开,如果文件不存在则新建该文件
vim filename1 filename2 filename... // 同时编辑多个文件(可查看此:示例文章
:w //保存文件
:q //退出编辑器(文件已保存的情况下使用)
:q! //强制退出编辑器,且不保存
:wq //保存文件,并退出编辑
:w filename //另存为 filename 文件

插入文本或行

a //在当前光标位置的右边添加文本
i //在当前光标位置的左边添加文本
A //在当前行的末尾位置添加文本
I //在当前行的开始处添加文本(非空字符的行首)
O //在当前行的上面新建一行
o //在当前行的下面新建一行
R //替换(覆盖)当前光标位置及后面的若干文本
J //合并光标所在行及下一行为一行(依然在命令模式)

移动光标

vim可以直接用键盘上的上下左右光标来移动,但正规的vi是用小写英文字母 h 、 j 、 k 、 l ,分别控制光标左、下、上、右移一格。
按 Ctrl+b :屏幕往后移动一页。
按 Ctrl+f :屏幕往前移动一页。
按 Ctrl+u :屏幕往后移动半页。
按 Ctrl+d :屏幕往前移动半页。
按数字 0 :移到当前行的开头。
按 G :移动到文章的最后。
按 $ :移动到光标所在行的行尾。
按 ^ :移动到光标所在行的行首。
按 w :光标跳到下个字的开头。
按 e :光标跳到下个字的字尾。
按 b :光标回到上个字的开头。
按 #l :光标往后移的第#个位置,如:5l,56l .

删除、恢复字符或行

x :每按一次,删除光标所在位置的后面一个字符。
nx :删除光标所在位置的后面n个字符。例如: 6x 表示删除光标所在位置的后面6个字符。
X :每按一次,删除光标所在位置的前面一个字符。
nX :删除光标所在位置的前面n个字符,例如, 20X 表示删除光标所在位置的前面20个字符。
dd :删除光标所在行。
ndd :从光标所在行开始删除n行。

搜索

/taitaiblog //向光标下搜索"taitaiblog"字符串
?taitaiblog //向光标上搜索"taitaiblog"字符串
n //向下搜索前一个搜索动作
N //向上搜索前一个搜索动作

跳转至指定行

n+ //向下跳n行
n- //向上跳n行
nG //跳到行号为n的行
G //跳至文件的底部

行号显示&关闭

:set nu //显示行号
:set nonu //取消显示行号

复制、粘贴操作

yy //将当前行复制到缓存区,也可以用 “ayy 复制,”a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
nyy //将当前行向下n行复制到缓冲区,也可以用 “anyy 复制,”a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
yw //复制从光标开始到词尾的字符。
nyw //复制从光标开始的n个单词。
y^ //复制从光标到行首的内容。
y$ //复制从光标到行尾的内容。
p //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用”ap 进行粘贴。
P //粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用”aP 进行粘贴。

文本替换

:s/old/new //用new替换行中首次出现的old
:s/old/new/g //用new替换行中所有的old
:n,m s/old/new/g //用new替换从n到m行里所有的old
:%s/old/new/g //用new替换当前文件里所有的old

编辑文件切换

:e otherfilename // 编辑文件名为otherfilename的文件。
:n otherfilename // 与上功能一样 。

最后修改:2022 年 06 月 09 日
如果觉得我的文章对你有用,请随意赞赏