扩展命令模式
在命令模式下,按 :
进入Ex(个人更偏向于叫末行)模式,创建一个命令提示符:处于屏幕底部的左侧
扩展命令模式基本命令
w 写(存)磁盘文件
wq 写入并退出,个人建议使用该命令保存退出
x 写入并退出,等同于wq
X 加密,不建议使用
q 退出
q! 不保存退出,及时更改都将丢失
r 后接FILENAME,读取FILENAME 的内容到当前vim 文本中
w 后接FILENAME,将当前文件内容写入另一个文件
!CMD 在不退出vi的情况下,执行命令
r!CMD 读入命令的输出
地址定界
命令格式
:start_pos,end_pos CMD #起始坐标,结束坐标 命令
地址定界格式
# 具体第# 行,如2表示第二行
#,# 第一个表示起始行,第二个表示结尾行,如2,4表示从第二行到第四行
#,+# 第一个表示起始行,加上第二个表示行数,如3,+5表示从第三行到第八行
. 当前行
$ 最后一行
.,$-1 当前行到倒数第二行
% 全文,等同1,$
/pattern/ 从当前行向下查找,直到匹配pattern的第一行,即:正则表达式
/pat1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/ 从指定行开始,一直找到第一个匹配pattern的行结束
/pat/,$ 向下找到第一个匹配pattern的行到整个文件的结尾的所有行
地址定界后跟编辑命令
d 删除
y 复制
p 粘贴到当前行的上一行
P 粘贴到当前行的下一行
w file 将范围内的行另存至指定文件中
r file 在指定位置插入指定文件中的所有内容
范例
#末行模式下,4,9 将第4行到第9行的内容删除
:4,9
按d 键
#末行模式下,4,+5 将第4行到第9行的内容另存到f1.txt中
:4,+5 r f1.txt
查找并替代
s/要查找的内容/替换的内容/修饰符
内容说明:
要查找的内容:可使用基本正则表达模式
替换为的内容:不能使用模式,但可以使用\1,\2,...等后向引用符号;还可以使用“&”引用前面查看时查找到的整个内容
修饰符:
i 忽略大小写
g 全局替换,默认情况下,每一行只替代第一个匹配项
gc 全局替换,替换前提示
/ 查找替换中的分隔符 / 可替换为其他字符,如:#,@ (个人喜欢使用@)
范例
#在末行模式下,@ 是分隔符,g 表示全局替换。将文中的etc 替换成var
:s@etc@var@g
#在末行模式下,# 是分隔符,i 表示忽略大小写。将文中的/boot 替换成/
:s#/boot#/#i
#在末行模式下,从当前行到倒数第二行,root 替换成dawn
:.,$-1s@root@dawn@g
#全文中l..e 后追加r ()模式匹配,\1,\2...前向引用
[root@centos8 data]#vim test
hello, like
hgrei, love
hefgelo,like
hihafd,lvoe
#末行模式下,% 表示全文,l..e需要放在()内,且()需要转义,属于模式匹配,\1 表示前向引用
:%s@\(l..e\)@\1r@g
#匹配后的结果
hello, liker
hgrei, lover
hefgelo,liker
hihafd,lvoer
#全文中l..e 替换为 r
[root@centos8 data]#vim test
hello, like
hgrei, love
hefgelo,like
hihafd,lvoe
#末行模式下,% 表示全文,l..e需要放在()内,且()需要转义,属于模式匹配,r是替换的内容
:%s@\(l..e\)@r@g
#匹配后的结果
hello, r
hgrei, r
hefgelo,r
hihafd,r
#将全文中的good 后追加xxx,as后追加aaa
:%s#\(good\) \(as\)#\1xxx,\2aaa#
定制vim 的工作特性
扩展命令(末行)模式的配置只对当前vim 进程有效,可将配置存放在文件中持久保存
全局 /etc/.vimrc
个人 ~/.vimrc
行号*
显示:set number 缩写:set nu
取消显示:set no number 缩写:set nonu
忽略大小写*
启用:set ignorecase 缩写:set ic
不忽略:set noic
显示Tab 和换行符 ^| 和$ 显示*
启用:set list
禁用:set nolist
自动缩进*
启用:set autoindent 缩写:set ai
禁用:set noai
复制保留格式*
启用:set paste
禁用:set nopaste
高亮搜索
启用:set hlsearch
禁用:set nohlsearch 缩写:set nohl
语法高亮
启用:syntax on
禁用:syntax off
文件格式
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写:set ff=dos|unix
Tab 用空格代替
启用:set expandtab 默认为8个空格代替Tab
禁用:set noexpandtab
简写:set et
Tab 用指定空格的个数代替*
启用:set tabstop=# 指定# 个空格代替Tab
简写:set ts=4
设置文本高度
set textwidth=65(vim only)
set wrapmargin=15
设置光标所在行的标识线*
启用:set cursorline 缩写:set cul
禁用:set nocursorline
加密
启用:set key=pwd
禁用:set key=
set 帮助
:help option-list
:set or :set all