文章目录
1. vi/vim介绍
vi编辑器是linux和unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的。
vi编辑器可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
vim是vi的增强版,比vi更容易使用。vi的命令几乎都可以在vim上使用。
2. vi/vim使用详解
2.1 vi/vim的特点
- vi/vim是一种纯文本编辑器,它不像word可以排版,可以调整字体大小,可以改变字体等等,vi/vim只是一个文本编辑工具,它只能对文本的内容进行操作,比如新增内容、修改内容、删除内容等等
- vi是一个全屏幕的文本编辑器,在编辑文本时它将占据整个屏幕
2.2 vi/vim三种编辑模式
vi/vim编辑器有三种编辑模式,分别是
命令模式
输入模式
末行模式
编辑模式作用命令模式用户执行命令,比如复制行、粘贴行等等输入模式用于输入文本、修改文本等等末行模式用于查找文本、保存修改等等
vi/vim三种编辑模式之间转换的方式
命令模式–>输入模式i:insert,在当前光标所在字符的前面,转为输入模式
I:大写的i,在当前光标所在行的行首转换为输入模式
a:append,在当前光标所在字符的后面转换为输入模式
A:在当前光标所在行的行尾转换为输入模式
o:open,在当前光标所在行的下方新建一行并转为输入模式
O:大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式
输入模式–>命令模式
- ESC
命令模式–>末行模式
- :
末行模式–>命令模式
- ESC ESC
2.3 文本编辑方式
打开文件方式:文件打开后默认处于命令模式下
vim filename //打开文件
vim +n filename //打开文件并定位到第n行
vim +/pattern filename //打开文件并定位到第一次被/pattern匹配到的内容行首
关闭文件方式:
末行模式关闭文件:
命令意义q!不保存退出wq!强行保存并退出x强行保存并退出
命令模式关闭文件:
- ZZ
移动光标
移动方式指令效果逐字符移动h l j k #h #l #j #k向左移动一个字符 向右移动一个字符 向下移动一个字符 向上移动一个字符 向左移动#个字符 向右移动#个字符 向下移动#个字符 向上移动#个字符以单词为单位移动w e b #w #e #b移动到下一个单词的词首 跳至当前或下一个单词的词尾 跳至当前或上一个单词的词首 以当前光标为起点跳至第#个单词的词首 以当前光标为起点跳至第#个单词的词尾 以当前光标为起点跳至第#个单词的词首行内跳转0 ^ $数字0,跳转到绝对行首 跳转到行首的第一个非空白字符 跳转到绝对行尾行间跳转gg G #gg #G跳转到第一行 跳转到最后一行 跳转到第#行 跳转到第#行翻屏ctrl+f ctrl+b向下翻一屏 向上翻一屏
字符编辑
编辑命令意义x删除光标所在处的单个字符#x删除光标所在处及其向后共#个字符xp交换光标所在处的字符及其后面字符的位置
删除命令:d
命令模式下d命令常与跳转命令组合使用,如
- d$:表示删除当前光标所在位置到行尾的内容
- d^:表示删除当前光标所在位置到第一个行首非空白字符位置的内容
- d0:表示删除当前光标所在位置到绝对行首的内容
- #d跳转符:删除跳转符指定范围内的#个,例如 - #dw- #de- #db
- dd:删除当前光标所在行整行
- #dd:删除包括当前光标所在行在内的#行
- D:删除当前光标所在行的内容,保留空行
末行模式下d命令的使用
语法:
:StartADD,EndADDd
这里的StartADD与EndADD是指一个范围,例如:
- 1,5d:表示删除第1到第5行
范围表示方法:
表示方法意义.光标所在当前行$最后一行+#光标所在行往后#行$-#倒数第#行%全文
复制命令:yy
粘贴命令:p
- p:小写p - 若删除或复制的为整行内容,则粘贴至光标所在行的下方- 若删除或复制的为非整行,则粘贴至光标所在字符的后面
- P:大写p - 若删除或复制的为整行内容,则粘贴至光标所在行的上方- 若删除或复制的为非整行,则粘贴至光标所在字符的前面
替换:r
- R:替换模式,替换多个字符
- r#:将当前光标的字符替换为#,这里的#可以是任何字符
撤销编辑:u
- u:撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作
- #u:直接撤销此前的#次编辑操作
- ctrl+r:还原最近一次的撤销操作
重复前一次编辑操作:.
可视化模式:
可视化模式下可以对选取的内容进行前面讲的所有编辑操作
- v:按字符选取内容
- V:按矩形块(行)选取内容
文本查找:
- /pattern:从上往下查找匹配的内容
- ?pattern:从下往上查找匹配的内容
- n:从上往下查找匹配到的内容的下一条
- N:从下往上查找匹配到的内容的下一条
查找并替换:s
s命令只能在末行模式下使用
语法:
ADDR1,ADDR2 s/pattern/string/gi
- 1,5 s/abc/def/g:表示把第一行到第五行的所有abc替换为def
- 18,28s/^/#/g : 表示把18行到28行的内容注释掉
末行模式下显示或取消显示行号:
- set nu:显示行号
- set nonu:取消显示行号
取消匹配常亮
- :noh
ring/gi`
- 1,5 s/abc/def/g:表示把第一行到第五行的所有abc替换为def
- 18,28s/^/#/g : 表示把18行到28行的内容注释掉
末行模式下显示或取消显示行号:
- set nu:显示行号
- set nonu:取消显示行号
取消匹配常亮
- :noh
版权归原作者 阿干tkl 所有, 如有侵权,请联系我们删除。