文本编辑
1.vi/vim介绍
vi/vim都是Linux中的文本编辑器,但是目前我们使用比较多的是vim编辑器。vim是从vi发展出来的一个文本编辑器,代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。vim具有程序编程的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计。
2.vi/vim编辑器的特点
- vi/vim是一种纯文本编辑器,它不像Word可以排版,可以调整字体大小,可以改变字体等等。
- vi/vim只是一个文本编辑工具,它只能对文本的内容进行操作,比如对文本的新增内容、修改内容、删除内容等等
- vi是一个屏幕的文本编辑器,在编辑文本时它将占据整个屏幕
- vim是vi的增强版,比vi更容易使用,vi的命令几乎都可以在vim上使用
3.vi/vim的三种模式
3.1命令模式
命令模式:在该模式下不能对文本直接编辑,可以输入快捷键进行一些操作(删除行、复制行、移动光标、粘贴等等)该模式是打开文件之后默认进入的模式。
3.2编辑模式
输入模式:也可以叫做编辑模式,在该模式下可以对文件的内容进行编辑。
3.3末行模式
末行模式:也可以叫尾行模式,可以在末行输入命令来对文件进行操作(搜索、替换、保持、退出等等)。
4.vi/vim三种模式之间的转换
命令模式--------->输入模式
- 用户刚刚启动vi/vim,便进入了命令模式。
- 此状态下敲击键盘动作会被vi/vim识别为命令,而非输入字符。比如我们此时按下i并非输入字符i,而是被当做了一个命令进入输入模式。
- 以下是常用的几个命令:
命令 | 作用 |
---|---|
i | insert,在当前光标所在字符的前面转为输入模式 |
I(大写的i) | 在光标所在行的行首转换成输入模式 |
a | append,在当前光标所在字符的后面转换成输入模式 |
A | 在光标所在行的行尾转换成输入模式 |
o(字母o) | open,在当前光标所在行的下方新建一行并转为输入模式 |
O(大写的字母o) | 在当前光标所在行的上方新建一行并转为输入模式 |
输入模式--------->末行模式
:(输入一个冒号)
末行模式--------->命令模式
在键盘下按下Esc
5.文本编辑方式
打开文件:
[root@hyh ~]# vim a
打开文件夹并定位到第n行
[root@hyh ~]# vim +n a
移动光标
以字符为单位移动:
指令 | 效果 |
---|---|
h或向左箭头键← | 光标向左移动一个字符 |
j或向下箭头键↓ | 光标向下移动一个字符 |
k或向上箭头键↑ | 光标向上移动一个字符 |
l或向右箭头键→ | 光标向右移动一个字符 |
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 “30j” 或 “30↓” 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
以单词为单位移动:
指令 | 效果 |
---|---|
w | 移动到下一个单词的词首 |
e | 跳至当前或下一个单词的词尾 |
b | 跳至当前或上一个单词的词首 |
#w | 以当前光标为起点跳转第#个单词词首 |
#e | 以当前光标为起点跳转第#个单词词尾 |
#b | 以当前光标为起点跳转第#个单词词首 |
行内跳转:
指令 | 效果 |
---|---|
0(数字0) | 跳转到当前行首 |
^ | 跳转到行首的第一个非空白字符 |
$ | 跳转到行尾 |
行间跳转:
指令 | 效果 |
---|---|
gg | 跳转到第一行 |
G | 跳转到最后一行 |
#gg | 跳转到第#行 |
#GG | 跳转到第#行 |
翻屏:
指令 | 效果 |
---|---|
Ctrl+f | 向下翻一屏 |
Ctrl+b | 向上翻一屏 |
字符编辑:
编辑命令 | 意义 |
---|---|
x | 删除光标所在处的单个字符 |
#x | 删除光标所在处及其向后共#个字符 |
xp | 交换光标所在处的字符及其后面字符的位置 |
删除命令:d
命令模式下d命令常与跳转命令组合使用,如
- d$:表示删除当前光标所在位置到行尾的内容
- d^:表示删除当前光标所在位置到第一个行首非空白字符位置的内容
- d0:表示删除当前光标所在位置到绝对行首的内容
- #d跳转符:删除跳转符指定范围内的#个
- dd:删除当前光标所在行整行
- #dd:删除包括当前光标所在行在内的#行
- D:删除当前光标所在行的内容,保留空行
末行模式下d命令的使用
语法::StartADD,EndADDd
这里的StartADD与EndADD是指一个范围,例如:
- 1,5d:表示删除第1到第5行
范围表示方法:
表示方法 | 意义 |
---|---|
. | 光标所在当前行 |
$ | 最后一行 |
+# | 光标所在行往后#行 |
$-# | 倒数第#行 |
% | 全文 |
搜索 | |
---|---|
/word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用) |
?word | 向光标之上寻找一个字符串名称为 word 的字符串。 |
n | 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串! |
N | 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 |
使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词! |
替换:r
- R:替换模式,替换多个字符
- r#:将当前光标的字符替换为#,这里的#可以是任何字符
查找并替换:s
s命令只能在末行模式下使用
语法:ADDR1,ADDR2 s/pattern/string/gi
- 1,5 s/abc/123/g:表示把第一行到第五行的所有abc替换为123
复制命令:yy
粘贴命令:p
- p:小写p
- 若删除或复制的为整行内容,则粘贴至光标所在行的下方
- 若删除或复制的为非整行,则粘贴至光标所在字符的后面
- P:大写p
- 若删除或复制的为整行内容,则粘贴至光标所在行的上方
- 若删除或复制的为非整行,则粘贴至光标所在字符的前面
撤销编辑:u
- u:撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作
- #u:直接撤销此前的#次编辑操作
- ctrl+r:还原最近一次的撤销操作
重复前一次编辑操作:.(小数点)
选取的内容:v
- v:按字符选取内容
- V:按矩形块(行)选取内容
末行模式关闭文件:
命令 | 意义 |
---|---|
q! | 不保存退出 |
wq! | 强行保存并退出 |
x | 强行保存并退出 |
末行模式下显示或取消显示行号:
- set nu:显示行号
- set nonu:取消显示行号
命令模式关闭文件:
- ZZ(大写zz就是shift+zz)