作者:永不落的梦想
作者主页:传送
座右铭:过去属于死神,未来属于自己
本文专栏:Liunx篇 神器使用篇
今日鸡汤:当你想要放弃的时候想想当初为什么坚持到这里
目录
一、vi和vim介绍
二、vim的三种模式
1.三种模式
2.vim的进入和退出
三、vim模式切换
1.切换到命令模式
2.切换到末行模式
3.切换到编辑模式
四、命令模式
1.光标移动
2.复制与粘贴
3.剪切/删除
4.撤销与恢复
五、末行模式
1.保存
2.退出
3.调用外部命令
4.搜索/查找
5.替换
6.显示行号
7.切换文件
六、编辑模式
七、vim功能模块
1.代码着色
2.简易计算器
八、补充内容
1.vim的配置
2.异常退出
3.新建别名
4.退出方式
命令模式:不能对文件直接编辑,只能通过快捷键进行一些操作(如移动光标、复制、粘贴等),打开vim后默认进入命令模式;
末行模式:可在末行输入一些命令对文件进行操作(如搜索、替换、保存、退出、高亮等);
编辑模式:可对文件内容进行编辑;
进入:
语法1:vim 文件路径 //直接打开指定文件(光标位于首行或上次关闭文件时光标的所在行)
语法2:vim +数字 文件路径 //打开指定文件并将光标移动到指定行(数字对应的行数)
语法3:vim +/关键词 文件路径 //打开指定文件并高亮显示关键词
语法4:vim 文件路径1 文件路径2 文件路径3 //可同时打开多个文件,文件之间可切换操作
退出:
语法::q //键盘输入英文:号进入末行模式,输入字母q再回车
用vim指令打开文件时默认为命令模式;
按一下键盘ESC键可从编辑模式切换到命令模式;
按一下或连按两下ESC键或用键盘删除末行模式下的英文符号:可从末行模式切换到命令模式
命令模式下键盘输入英文符号:可切换到末行模式;
命令模式下键盘输入字母i或a(还有其他字母也可以这两个比较常用)可切换到编辑模式以编辑
注意:vim刚打开文件时默认为命令模式,命令模式可切换到末行模式或编辑模式,但末行模式与编辑模式之间不能直接相互切换;
语法1:^ //键盘输入符号^,光标移动到光标所在行的行首
语法2:$ //键盘输入符号$,光标移动到光标所在行的行尾
语法3:gg //键盘输入字母gg,光标移动到文件的首行
上图中,当输入一个g时不是正确语法在右下角可以看到输入的内容g,当输入两个g时立刻会执行命令,这里不便演示,只需按语法输入命令即可执行
语法4:G //键盘输入字母G,光标移动到文件的尾行
语法5:ctrl+b //键盘ctrl+b,向上翻屏(前提是文件内容足够翻屏)
语法6:ctrl+f //键盘ctrl+f,向下翻屏
语法7:数字G //键盘输入数字+字母G,光标移动到指定行(数字对应的行数)
语法8:数字+键盘方向键上/下 //键盘输入数字+键盘方向键上/下,光标以光标所在行为准向上/下移动指定行(对应的数字)
语法9:数字+键盘方向键左/右 //键盘输入数字+键盘方向键左/右,光标以光标所在位置为准向左/右移动指定个字符(对应的数字)
语法10::数字 //键盘输入英文符号:+数字再回车,光标移动到指定行(属于末行模式)
语法1:yy //键盘输入字母yy,复制光标所在行
语法2:数字yy //键盘输入数字+字母yy,从光标所在行开始向下复制指定行(数字对应的行数,包括了光标所在行)
语法3:ctrl+v //键盘ctrl+v进入可视化复制,用键盘的方向键控制复制区域,然后键盘输入字母yy即可完成复制
上图中,进入可视化复制后可用键盘方向键控制复制区域,选中区域后输入yy即可完成复制,右下角的3*6表示当前复制区域的大小,17,4表示光标的当前位置是第17行第4个字符
粘贴语法:p //键盘输入字母p即可在光标处粘贴复制的内容
语法1:dd //键盘输入字母dd,剪切光标所在行,光标所在行的下面行会上移填补剪切行
语法2:数字dd //键盘输入数字+字母dd,从光标所在行起向下剪切指定行(数字对应的行数,包括了光标所在行),后面行会上移填补剪切部分
语法3:D //键盘输入字母D,剪切光标所在行但后面行不会上移填补剪切行,剪切行变空
删除语法:删除即剪切后不复制,删除操作使用剪切语法
撤销语法::u //键盘输入符号:和字母u再回车(属于末行模式),撤销上一步操作
恢复语法:ctrl+r //键盘ctrl+r,恢复撤销操作(即取消之前的撤销操作)
语法1::w //键盘输入英文符号:+字母w再回车,保存当前文件
语法2::w 文件路径 //键盘输入英文符号:+字母w+空格+文件路径再回车,另存为指定文件
语法1::q //键盘输入英文符号:+字母q再回车,退出当前文件
语法2::wq //键盘输入英文符号:+字母wq再回车,保存当前文件并退出
语法3::q! //键盘输入英文符号:+字母q+英文符号!再回车,不保存对文件的修改并退出
语法::q外部命令 //键盘输入英文符号:+字母q+外部命令再回车,外部命令如 ls 命令等,不退出文件的同时执行外部命令,执行后按任意键可以切换回文件
语法1::/关键词 //键盘输入英文符号:+/+关键词再回车,按关键词查找,查找到的内容会被高亮显示
语法2:N/n //键盘输入字母N/n,光标移动到上/下一个查找到的内容(属于命令模式)
语法3::nohl //键盘输入英文符号:+字母nohl再回车,取消查找到的内容的高亮显示,若不取消内容会一直高亮显示
语法1::s/搜索的内容/新内容 //用新内容替换光标所在行第一处被搜索到的内容
语法2::s/搜索的内容/新内容/g //用新内容替换光标所在行全部被搜索到的内容
语法3::%s/搜索的内容/新内容 //用新内容替换整个文件每一行第一处被搜索到的内容
语法4::%s/搜索的内容/新内容/g //用新内容替换整个文件全部被搜索到的内容
语法1::set nu //键盘输入英文符号:+字母set+空格+字母nu再回车,显示文件每行的行号,显示行号是暂时的下次打开该文件不会再显示
语法2::set nonu //键盘输入英文符号:+字母set+空格+字母nonu再回车,取消行号显示
语法1::files //键盘输入英文符号:+字母files再回车,查看同时打开的所有文件的名称
上图中,%a表示它对应的文件是当前操作的文件,#表示它对应的文件是上一个操作的文件,行数处显示第0行表示从未切换到它对应的文件进行操作
语法2::open 文件名 //键盘输入英文符号:+字母open+空格+文件名再回车,切换到其他打开的文件进行操作
语法3::bn //键盘输入英文符号:+字母bn再回车,切换到下一个打开的文件
语法4::bp //键盘输入英文符号:+字母bn再回车,切换到上一个操作的文件
注意:每执行完一次末行模式下的命令之后,都会自动退回到命令模式,因此每次执行末行模式下的命令都需要先键盘输入英文符号:后再输入命令
命令模式下键盘输入以下字母可进入编辑模式进行对应的操作:
i | 在光标所在字符前开始插入 |
a | 在光标所在字符前开始插入 |
o | 在光标所在行的下面另起一行开始插入 |
I | 在光标所在行的行首开始插入,若行首有空格则在空格后插入 |
A | 在光标所在行的行尾开始插入 |
O | 在光标所在行的上面另起一行开始插入 |
S | 删除光标所在行并开始插入 |
按照以上不同的方式进入编辑模式后,正常使用键盘进行增删改即可,重点掌握前两种方式,退出编辑模式键盘按ESC键;
语法1::syntax on //键盘输入英文符号:+字母syntax+空格+on,开启代码着色,默认是开启的
语法2::syntax off //键盘输入英文符号:+字母syntax+空格+off,关闭代码着色(该操作是暂时的)
当编辑文件中需要用计算器计算时,不需要退出文件,可以使用vim的简易计算器完成计算;
使用方法:
在编辑模式下键盘ctrl+r,然后键盘输入符号=,光标就会移动到末行,键盘输入计算格式后回车,计算结果就会出现在原光标位置处;
常用配置:
syntax on/off //开启/关闭代码着色
set nu/nonu //显示/不显示行号
配置分类:
临时配置:在末行模式下输入配置,此配置是暂时的,下次打开文件时不会生效;
个人配置:个人配置文件路径是~/.vimrc,即当前用户家目录下的隐藏文件.vimrc,此配置只对当前用户永久生效,若不存在.vimrc文件可自行创建编辑加入vim配置;
全局配置:全局配置文件路径是/etc/vim/vimrc,不同版本目录路径可能有点差异,此配置对所有用户永久生效,可编辑全局配置文件加入vim配置;
注意:对于同一配置项,当个人配置存在此配置项时遵循个人配置,否则遵循全局配置;
编辑中的文件未保存直接退出(按终端右上角的叉或断电等),这就是异常退出;异常退出会产生一个隐藏的交换文件(.文件名.swp,编辑中产生的临时文件,可以指令ls -a查看),并且在下一次打开该异常退出的文件时会报错,将交换文件删除即可正常打开;
依靠一个别名映射文件(路径时~/.bashrc)来执行自己创建的指令,这就是别名机制;在映射文件中按特定格式加入自己的指令即可执行自己创建的指令;
上图中, vim打开.baserc文件,找到上图内容处可按格式加入自己创建的指令,如最后一行是我加的,即haha指令将等效于clear指令(笑两下就可以清屏了,不过我的失败了,好像是添加的位置不对);
注意:加入自己的指令后需要重启才能生效;
语法::x //文件未被修改直接退出,文件被修改过保存并退出
:x和:wq的区别:
使用:wq,文件的修改时间一定会改变;
而使用:x,在文件未被修改的情况下,并不会改变文件的修改时间;
建议:使用:x代替:q和:wq,更加简便的同时不会在未修改文件的情况下改变文件的修改时间