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配置