Linux常用命令--vim编辑器
摘要
-
本文介绍vim编辑器的使用方法。
-
本文基于
CentOS8(x86_64)
vim操作模式
-
vim支持很多种操作模式,常用的有三种操作模式,分别是命令(正常、普通)模式
(Command Mode)、插入模式(Insert Mode)和底行模式(Last Line Mode)。 -
命令(正常、普通)模式
(Command Mode)进入vim之后,就处于
(Command Mode)之中,在该模式下可以控制屏幕光标的移动,字符、字或行的删除,移动复制某区段以及进入(Insert Mode)或(Last Line Mode) -
插入模式
(Insert Mode)在命令模式下输入如下字符即可切换至插入模式
1
2
3
4a:在光标后 A:在本行末
i:在光标前 I:在本行开始
o:在光标下新开一行 O:在光标上新开一行
此时就可以在光标所在处输入字符了
只有在(Insert Mode)下,才可以做文字输入,按ESC键可回到(Command Mode),该模式是我们用到的最频繁的模式 -
底行(末行)模式
(Last Line Mode)在
(Command Mode)下,输入shift + :,其实就是输入:即可进入(Last Line Mode)
在(Last Line Mode)下,输入命令并回车即可执行相应的操作,无论输入的命令是否执行成功都会退出(Last Line Mode)并切换回(Command Mode),
或者输入命令后不想执行,此时可以连按两次Esc键即可切换回(Command Mode),或者按退格键直到取消:也会回到(Command Mode)
在(Last Line Mode)下,可以进行文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作 -
要查看vim的所有操作模式,可以在命令行输入
vim,然后在底行模式中输入help vim-modes命令即可。
vim语法
1 | # fileName不存在则创建 |
命令(正常、普通)模式(Command Mode)相关指令
移动光标
-
vim可以直接用键盘上的上下左右键来移动光标,但正规的vim是用小写英文字母
h 、 j 、 k 、 l,分别控制光标左、下、上、右移一格 -
gg:光标移动到第一行开始处 -
G:光标移动到最后一行开始处 -
#G: 例如,15G ,表示移动光标至第15行行首 -
$:移动到光标所在行的行尾 -
^ (0):移动到光标所在行的行首
上面的比较常用
-
H: 光标移动到当前屏幕中的第一行开始处 -
L: 光标移动到当前屏幕中的最后一行开始处 -
M: 光标移动到当前屏幕中的最中间一行开始处 -
w:光标跳到下个字的开头 -
e:光标跳到下个字的字尾 -
b:光标回到上个字的开头 -
#l:光标移到相对当前光标所在处后的第#个位置,如:当前光标在本行第3个字符处,则5l表示移动到本行第8个字符处 -
ctrl + b:屏幕往后移动一页 -
ctrl + f:屏幕往前移动一页 -
ctrl + u:屏幕往后移动半页 -
ctrl + d:屏幕往前移动半页
删除文字
-
x:每按一次,删除光标所在位置的一个字符 -
dd:删除光标所在行 -
#dd:从光标所在行开始删除#行
上面的比较常用
-
#x:例如,6x 表示删除光标所在位置的后面(包含自己在内)6个字符 -
X:大写的X,每按一次,删除光标所在位置的前面一个字符 -
#X:例如,20X 表示删除光标所在位置的前面20个字符 -
dG:删除光标所在行到末尾的内容 -
D:删除光标所在处到行尾
复制
-
yy:复制光标所在行到缓冲区。 -
#yy:例如,6yy 表示拷贝从光标所在的该行往下数6行文字 -
p:将缓冲区内的字符贴到光标所在位置。注意:所有与y有关的复制命令都必须与p配合才能完成复制与粘贴功能
上面的比较常用
-
yw:将光标所在之处到字尾的字符复制到缓冲区中 -
#yw:复制#个字到缓冲区
替换
-
r:替换光标所在处的字符,一次只能替换一个字符 -
R:替换光标所到之处的字符,直到按下ESC键为止
不常用,直接进入插入模式修改就行
更改
-
cw:更改光标所在处的字到字尾处,标点符号或空格分隔,此时进入(Insert Mode) -
c#w:例如,c3w 表示更改3个字,标点符号或空格分隔,此时进入(Insert Mode)
不常用,直接进入插入模式修改就行
撤销或恢复上一次操作
-
u: 如果您误执行一个命令,可以马上按下u,回到上一个操作,按多次u可以执行多次恢复。 -
ctrl + r: 撤销恢复,多次执行ctrl + r,可以多次撤销
底行(末行)模式(Last Line Mode)相关指令
列出或取消行号
-
set nu: 输入set nu后,会在文件中的每一行前面列出行号 -
set nonu: 输入set nonu后,会取消文件中的每一行前面列出的行号
跳到文件中的某一行
-
#:#号表示一个数字,再冒号后输入一个数字,再按回车键就会跳到该行
查找字符
-
/ + key: 先按/键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往 后 寻找到您要的内容,循环往复。 -
? + key1: 先按?键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往 前 寻找到您要的内容,循环往复。 -
set ic:搜索时忽略大小写 -
set noic:搜索时区分大小写
替换,语法类似于sed的s替换
-
n1s/source/target/:n1代表行号,替换第n1行首次出现的source为target -
n1s/source/target/i:n1代表行号,替换第n1行首次出现的source为target,i表示不区分大小写 -
n1s/source/target/g:n1代表行号,替换第n行出现的全部source为target -
%s/source/target/g:%代表所有行,配合g表示全文替换,将整个文档中的source替换为target -
n1,n2s/source/target/ig:n1,n2代表行号,在n1行到n2行范围内替换指定内容,不区分大小写 -
示例
1 | n1,n2s/^/#/ :行首添加# |
删除,语法类似于sed的d删除
-
n1d:n1代表行号,删除指定的行 -
n1,n2d:n1,n2代表行号,删除指定范围的行 -
1,$d:删除所有行的全部内容
保存和退出
-
w:保存修改,不退出 -
w new_filename:另存为,新的文件名称为new_filename -
wq:保存退出 -
q!:不保存修改退出 -
wq!:强制保存修改并退出,文件是只读的时候可以使用该命令强制保存(只有文件所有者有权限这样做)
定义快捷键
-
我们可以自己定义快捷键,以定制化一个操作,比如在当前行行首添加
# -
语法为:
map ^P I#<ESC>: 定义ctrl + p,其含义为 输入大写字母I进入插入模式,输入#字符后按Esc切换回命令模式,注意,这里定义map时填写的<ESC>是一个字符一个字符写上的,而不是去按一次Esc按键^P的 输入方法为:ctrl+v+p -
此时在当前vim的命令模式下,输入
ctrl + p会在光标所在行的行首添加# -
unmap ^P:取消该快捷键 -
在底行模式下定义快捷键只对本次vim有效,退出vim就失效了,如要永久生效,可以配置到
~/.vimrc中
ab替换
-
ab替换可以让我们在使用vim的插入模式编辑内容时,输入指定的字符,vim会自动帮我们替换为指定的内容
-
语法为:
ab key1 key2,此时我们输入key1,会自动被vim替换为key2如:
ab myemali hanqunfeng@xxx.com,当输入myemail+空格后,会自动替换为hanqunfeng@xxx.com -
unab myemail:取消 -
在底行模式下定义ab替换只对本次vim有效,退出vim就失效了,如要永久生效,可以配置到
~/.vimrc中
vim配置
-
配置文件的位置
在目录
/etc目录下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
而在每个用户的home目录下,都可以自己建立私有的配置文件,命名为:.vimrc
私有配置会覆盖公共配置中相同的内容,通常我们只修改私有配置文件 -
常用配置,注释是行首双引号
1 | " 快捷键 |
-
关于vim更为详细的配置请参考 vim配置
vim插件: vim-plug
-
vim-plug是一个vim插件管理器,可以很方便的安装和卸载vim插件。
安装vim-plug
1 | curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ |
配置vim-plug
-
在
~/.vimrc中,添加如下内容:
1 | call plug#begin() |
通过vim-plug管理插件
-
在命令行中输入
vim进入vim编辑器,并通过如下命令管理插件:PlugInstall: 安装插件,会将~/.vimrc中列出的插件全部安装:PlugUpdate: 更新全部插件,这里要注意,更新后的插件可能不可用,因为升级后可能需要重新初始化,又或者某些配置发生了变更,具体还要看各个参加的github地址中的说明:PlugClean: 卸载未使用的插件,先编辑~/.vimrc,将不需要的插件内容删除,然后执行该命令:PlugStatus: 查看插件状态,如插件是否安装成功:PlugUpgrade: 升级vim-plug自身,其实就是重新下载最新版的plug.vim:q: 退出vim-plug管理界面
-
关于vim插件更为详细的配置请参考 vim配置