Vim的使用
1 使用 vim 初步
1.1 vim 命令格式
vim [OPTION]... FILE...
常用选项
+N #打开文件后让光标处于第N行的行首,+默认尾行
+/PATTERN #让光标处于第一个被PATTERN匹配到的行行首
-b file #二进制方式打开文件
-d file1 file2… #比较多个文件,相当于 vimdiff
-m file #只读打开文件
-e file #直接进入ex模式,相当于执行ex file
-y file #Easy mode (like "evim", modeless),直接可以操作文件,ctrl+o:wq|q! 保存和不保存退出说明:
如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它
范例:
[root@rocky8 ~]# vim f1.txt #光标在第一行
[root@rocky8 ~]# vim +3 f1.txt #光标在第3行
[root@rocky8 ~]# vim + f1.txt #光标在最后一行
[root@rocky8 ~]# vim +/^abc f2.txt #模式匹配定位
[root@rocky8 ~]# vim +/^bc* f2.txt #模式匹配定位1 三种主要模式和转换
vim 是 一个模式编辑器,击键行为是依赖于 vim的 的 “模式”
三种模式:
命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本
插入(Insert)或编辑模式:用于修改文本
扩展命令(extended command )或命令(末)行模式:保存,退出等
三种模式之间的切换:
vim 是 一个模式编辑器,击键行为是依赖于 vim的 的“模式”,就是说,在不同模式下,相同的按键,是不同的意思;
插入模式和扩展命令模式之间不能直接切换,要走命令模式中转;
打开vim 默认就是命令模式;
#命令模式 --------------------------> 插入模式
#下列按键皆可
#i insert, 在光标所在处输入
#I 在当前光标所在行的行首输入
#a append, 在光标所在处后面输入
#A 在当前光标所在行的行尾输入
#o 在当前光标所在行的下方打开一个新行
#O 在当前光标所在行的上方打开一个新行
#命令模式 --------------------------> 扩展命令模式
#直接敲冒号 :
#################################################################
#插入模式 -------------------------> 命令模式
#按ESC键
#################################################################
#插入模式 -------------------------> 扩展命令模式
#按ESC到命令模式,再按冒号 : 到扩展命令模式
#################################################################
#扩展命令模式 ----------------------> 命令模式
#ESC键或Enter键或退格健
#################################################################
#扩展命令模式 ---------------------> 插入模式
#ESC|Enter|退格键 到命令模式,再i|I|a|A|o|O 到插入模式范例: 插入颜色字符
[root@rocky8 ~]# echo -e '\e[1;31mhello\e[0m'
[root@centos7 ~]# echo -e '\e[1;31mhello\e[0m'
\e==^[vim 中实现
1 切换至插入模式
2 按ctrl+v+[ 三个键,显示^[
3 后续输入颜色信息,如:^[[32mhello^[[0m
4 切换至扩展命令模式,保存退出
5 cat 文件可以看到下面显示2 扩展命令模式
按:进入Ex模式 ,创建一个命令提示符: 处于底部的屏幕左侧
2.1 扩展命令模式基本命令
w #写(存)磁盘文件
wq #写入并退出
x #写入并退出
X #加密
q #退出
q! #不存盘退出,即使更改都将丢失
r filename #读文件内容到当前文件中
w filename #将当前文件内容写入另一个文件
!command #执行命令
r!command #读入命令的输出范例:
:w #保存当前更改,不退出
:q! #不保存退出
:r /etc/fstab #将/etc/fstable
:w test #将当前打开的文件保存至另外一个文件
:!hostname #执行hostname
:r!uname -a #将 uname -a 的命令执行结果读到当前文件中
:X #加密码
Enter encryption key: ******
Enter same key again: ******2.2 地址定界
格式:
:start_pos,end_pos CMD
2.2.1 地址定界格式
N #具体第N行,例如2表示第2行
M,N #从左侧M表示起始行,到右侧N表示结尾行
M,+N #从左侧M表示起始行,右侧表示从光标所在行开始,再往后+N行结束
M,-N #从左侧M表示起始行,右侧表示从光标所在行开始,-N所在的行行结束
M;+N #从第M行处开始,往后数N行,2;+3 表示第2行到第5行,总共取4行
M;-N #从第M-N行开始,到第M行结束
. #当前行
$ #最后一行
.,$-1 #当前行到倒数第二行
% #全文, 相当于1,$
/pattern/ #从当前行向下查找,直到匹配pattern的第一行,即正则匹配
/pat1/,/pat2/ #从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
N,/pat/ #从指定行开始,一直找到第一个匹配pattern的行结束
/pat/,$ #向下找到第一个匹配patttern的行到整个文件的结尾的所有行2.2.2 地址定界后跟一个编辑命令
p #输出
d #删除
y #复制
w file #将范围内的行另存至指定文件中
r file #在指定位置插入指定文件中的所有内容
t行号 #将前面指定的行复制到N行后
m行号 #将前面指定的行移动到N行后范例:
[root@rocky8 ~]# seq 10 > 10.txt
:2d #删除第2行
:2,4d #删除第2到第4行
:2;+3y #复制第2到第5行,总共4行
:3;+4w test #将第3到第7行,总共5行内容写入新文件
:5r /etc/issue #将/etc/issue 文件读取到第5行
:t2 #将光标所在行复制到第2行
:2,+3t10 #将第2到第5行,总共4行内容复制到第10行之后
:.d #删除光标所在行
:$y #复制最后一行
:2,4move9 #将第2行到第4行的内容移动到第9行的下一行
:2,4copy9 #将第2行到第4行的内容复制到第9行的下一行3 查找并替换
格式
:s/要查找的内容/替换为的内容/修饰符
:%s 表示全文查找替换说明:
要查找的内容:可使用基本正则表达式模式
替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容修饰符:
i #忽略大小写
g #全局替换,默认情况下,每一行只替换第一次出现
gc #全局替换,每次替换前询问查找替换中的分隔符/可替换为其它字符,如:#,@
范例:
:s/root/ROOT/ #替换当前行第一个root
:s/root/ROOT/g #替换当前行所有root
:%s/root/ROOT/g #全文替换
:%s/root/test/ig #不区分大小写全文替换
:%s/#// #将每行第一个#替换成空4 定制vim的工作特性
扩展命令模式的配置只是对当前vim进程有效,可将配置存放在文件中持久保存;
写配置文件必须保证能识别,有些短格式在配置文件;
/etc/vimrc #全局配置
~/.vimrc #个人配置4.1 行号
:set number|set nu #显示行号
:set nonumber|set nonu #取消显示行号4.2 忽略字符的大小写
:set ignorecase|set ic #忽略字符大小写
:set noignorecase|set noic #不忽略4.3 自动缩进
:set autoindent|set ai #启用自动缩进
:set noautoindent|set noai #禁用自动缩进4.4 复制保留格式
:set paste #复制时保留格式
:set nopaste #禁用复制时保留格式选项4.5 显示Tab ^I和换行符 和$显示
:set list #显示系统字符
:set nolist #隐藏系统字符4.6 高亮搜索
:set hlsearch #高亮显示搜索结果
:set nohlsearch|nohl #不高亮显示搜索结果4.7 语法高亮
:syntax on #语法高亮
:syntax off #关闭语法高亮4.8 文件格式
:set fileformat=dos|set ff=doc #启用windows格式
:set fileformat=unix|set ff=unix #启用unix格式4.9 Tab 用空格代替
:set expandtab|set et #使用空格代替Tab,默认8个空格
:set noexpandtab|set noet #禁用空格代替Tab4.10 Tab用指定空格的个数代替
:set tabstop=N|set ts=N #指定N个空格代替Tab
4.11 设置缩进宽度
>> #向右缩进 命令模式
<< #向左缩进 命令模式
:set shiftwidth=4 #设置缩进为4个字符4.12 设置光标所在行的标识线
:set cursorline|set cul #给光标所在行加下划线
:set nocursorline|set nocul #取消光标下划线4.13 加密
:set key=password #加密文档
:set key= #取消加密
centos7系统:
#vi/vim 可以给文件加密码,即在打开时会提示输入密码,输入错误的密码则会打开乱码;具体操作为:使用vi打开需要加密的文件后,在命令模式下(即正常模式)输入 :X 回车,提示输入密码(需输入两次密码)后,保存退出(没保存退出加密不生效),使用x保存退出不生效。
#在默认情况下输入:X时会提示Warning: Using a weak encryption method; see :help 'cm',解决办法是把默认的zip加密模式改成blowfish或者blowfish2,具体如下:
:setlocal cm? " show encryption method for the current file
:setlocal cm=zip " weak (default for backwards-compatibility)
:setlocal cm=blowfish " better
:setlocal cm=blowfish2 " best (requires Vim version 7.4.399 or higher)4.14 了解更多
set 帮助
:help option-list
:set|:set all 评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果