vim编辑器
一、Vim、Vi的三种编辑模式
1、基本模式
1️⃣:命令模式
2️⃣:编辑模式
3️⃣:末行模式(内置的命令行接口)
2、打开文件
vim [OPTION]... filename... +#: 打开文件后,直接让光标处于第#行的行首 +/pattern:打开文件后,直接让光标处于第一个被pattern匹配到的行的行首
3、模式转换
命令模式 --> 编辑模式 i: insert, 在光标所在处输入; a: append, 在光标所在处后面输入; o: 在当前光标所在行的下方打开一个新行; I:在当前光标所在行的行首输入; A:在当前光标所在行的行尾输入; O:在当前光标所在行的上方打开一个新行;编辑模式 --> 命令模式
:按ESC键(键盘最左上角)命令模式 --> 末行模式
:(Shift+:)末行模式 --> 命令模式
:按ESC键(键盘最左上角的)
四、文件关闭
关闭文件:在末行模式下 :q 退出 :q! 强制退出,丢弃做出的修改; :wq 保存退出 :x 保存退出 :w /PATH/TO/SOMEWHERE :r /PATH/TO/SOMEWHERE
五、光标移动
光标跳转:在命令模式下 字符间跳转:h, j, k, l h: 左 j:下 k:上 l:右单词间跳转: w:下一个单词的词首 e:当前或下一单词的词尾 b:当前或前一个单词的词首 #w:以当前光标为起点跳至第#个单词的词首 #e:以当前光标为起点跳至第#个单词的词尾 #b:以当前光标为起点跳至第#个单词的词首 行内跳转 ^: 跳转至行首的第一个非空白字符 0: 跳转至行首 $: 跳转至行尾 行间跳转 gg:直接跳转到第一行的行首 G:直接跳转到最后一行的行尾 #gg:直接跳转到第#行(向行首跳转) #G:直接跳转到第#行(向行尾跳转)
翻屏
ctrl+f:向下翻一屏
ctrl+b:向上翻一屏
六、字符编辑
1、命令模式下字符编辑
x: 删除光标处的字符 #x: 删除光标处起始的#个字符xp: 交换光标所在处的字符及其后面字符的位置
2、删除命令(d)
d: 删除命令,可结合光标跳转字符,实现范围删除; dd: 删除光标所在的行 #dd:删除包括当前光标所在行在内的#行(多行删除)d$: 删除到某一行的结尾 d^:删除到某一行的第一个字符位置(不包括空格或TAB字符) d0:删除到某一行的开始位置 dw:删除当前光标所在单词的词首到该单词的结尾位置(删除某个单词,光标必须位于单词的词首) db:删除当前光标所在单词的词尾该单词的词首位置 (删除某个单词,光标必须位于单词的词尾) //在linux中单词是指一串字符,以空格隔开;另外有特殊字符也算是一个单词,例如:= dl:删除当前字符(与x命令功能相同)
末行模式下d命令的使用
语法:Startadd,Endadd(这里的StartADD与EndADD是指一个范围)
示例
1,5d:表示删除第1到第5行
3、复制、粘贴命令(y、p、P)
复制命令(y, yank) yy:复制行 yw 复制一个单词 y$ 复制至行尾 y^ 复制至行首#yy: 复制多行
粘贴命令(p、P\put, paste)
p:小写p
若删除或复制的为整行内容,则粘贴至光标所在行的下方
若删除或复制的为非整行,则粘贴至光标所在字符的后面
P:大写p
若删除或复制的为整行内容,则粘贴至光标所在行的上方
若删除或复制的为非整行,则粘贴至光标所在字符的前面
4、替换命令
替换命令:r r#:将当前光标的字符替换为#,这里的#可以是任何字符 R:替换模式,替换多个字符
5、范围表示方法
. 光标所在当前行 $ 最后一行 +# 光标所在行往后#行 $-# 倒数第#行 % 全文
6、撤销编辑(u)
u:撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作 #u:直接撤销此前的#次编辑操作 ctrl+r:还原最近一次的撤销操作
7、可视化模式
可视化模式下可以对选取的内容进行编辑 v:按字符选取内容 V:按矩形块(行)选取内容
8、拓展
文本之间复制:在末行模式下 :1,5write >> /root/test.txt //将第1行至第5行复制到/root下的test.txt文件中 或者 先在file1文件的末行模式下复制: :1,5yy (回车) 然后退出去到另个文件file2中,直接在命令模式下按:p && P
9、文本查找
/pattern:从上往下查找匹配的内容 ?pattern:从下往上查找匹配的内容 n:从上往下查找匹配到的内容的下一条 N:从下往上查找匹配到的内容的下一条
10、查找并替换
s: 在末行模式下完成查找替换操作语法:s/要查找的内容/替换为的内容/修饰符
修饰符
i: 忽略大小写
g: 全局替换;默认情况下,每一行只替换第一次出现示例
1,5 s/abc/def/g:表示把第一行到第五行的所有abc替换为def
11、末行模式下显示或取消显示行号
set nu(number):显示行号 set nonu(number):取消显示行号
12、取消文本搜索关键字高亮显示
在末行模式下 :set nohlsearch (set nohlsearch :取消高亮显示、取消高亮搜索) //这样取消关键字高亮显示之后,退出文本编辑,再次进入的话,之前最后一次搜索的关键字任然会高亮显示 //如果在不退出文本编辑的前提下,取消第一次关键字高亮显示,之后继续搜索其他关键字则不会高亮显示;退出文本之后,再次进入就会高亮显示:nohlsearch && :noh(nohl)推荐使用这个命令
//这样输入取消高亮之后,退出文本之后,再次进入,之前搜索的关键词就不会高亮显示;
//但是在没有退出文本的前提下,取消第一次搜索关键词高亮显示,那么继续搜索其他的关键词还是会高亮显示