文章目录
在Linux中,我们知道,一切皆文件,那么需要修改配置文本编辑器就是必不可少的,而vi/vim就是我们Linux中非常强大编辑器。vim是vi的升级版。接下来我们就一起来看看吧!
vi/vim
编辑模式 | 作用 |
---|---|
命令模式 | 用户执行命令,例如复制行、粘贴行 |
输入模式 | 用于输入文本、修改文本等 |
末行模式 | 用于查找文本、保存修改等 |
末行模式命令模式输入模式按两次Esc按:按i、I、a、A、o、O按一次Esc末行模式命令模式输入模式
输入模式无法直接回到末行模式
命令模式—>输入模式
按一下任意一个字母
i
insert,在当前光标所在字符的前面,转为输入模式I
大写的i,在当前光标所在行的行首转换为输入模式a
append,在当前光标所在字符的后面转换为输入模式A
在当前光标所在行的行尾转换为输入模式o
open,在当前光标所在行的下方新建一行并转为输入模式O
大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式
输入模式—>命令模式
- 按一次
ESC
命令模式—>末行模式
- 按一次
:
末行模式—>命令模式
- 按两次
Esc
文件打开后默认处于命令模式下
vim
[文件名] 打开文件vim
+n [文件名] 打开文件并定位到第n行vim
+/pattern [文件名] 打开文件并定位到第一次被/pattern匹配到的内容行首
末行模式
命令 | 意义 |
---|---|
q! | 不保存退出 |
wq! | 强行保存并退出 |
x | 强行保存并退出 |
q | 退出 |
wq | 保存并退出 |
w | 保存但不退出 |
w! | 强制保存 |
命令模式
- 直接使用
ZZ
保存并退出
- 在之前学习的时候,并不是很常用这个方式,经常是用
wq!
来保存退出,但是后来发现还是这个比较方便。但也有弊端,原本在字母小写时直接Shift
+Z
,就是两个大写的ZZ
。结果一不小心就按成了Ctrl
+Z
了。给终止了,结果就GG。- 如果不小心终止了vi、vim。那么下次我们再打开这个文件会有错误的提示,就像是你word没有保存就关闭,下次打开会提示你要不要复原。我们的文本编辑器一样。Linux里会在你打开的目录中新建一个
.文件名.swp
的文件,不想在每次打开有提示,直接删除这个文件就可以了。
在命令模式下
以单词为单位移动
w
移动至下一个单词的词首e
跳至当前或下一个单词的词尾b
跳至当前或上一个单词的词首
逐字符移动
h
向左移动一个字符l
向右移动一个字符j
向下移动一个字符k
向上移动一个字符#h
向左移动#个字符#l
向右移动#个字符#j
向下移动#个字符#k
向上移动#个字符
行内跳转
0
数字0,跳至绝对行首^
跳至行首的第一个非空白字符$
跳至绝对行尾
行间跳转
gg
跳转至第一行G
跳转至最后一行#gg
跳转到第#行#G
跳转到第#行
句子间跳转
(
左小括号,跳转到上一个句子)
右小括号,跳转到下一个句子
段落间跳转
{
左大括号,跳转到上一个段落}
右大括号,跳转到下一个段落
翻屏
ctrl+f
向下翻一屏ctrl+b
向上翻一屏ctrl+d
向下翻半屏ctrl+u
向上翻半屏
可视化模式
v
按字符选取内容V
按行(矩形块)选取内容
字符编辑
x
删除光标所在处的单个字符#x
删除光标所在处及其向后共#个字符xp
交换光标所在处的字符及其后面字符的位置
删除
dG=d$
删除当前光标所在位置到行尾的内容d^
删除当前光标所在位置到第一个行首非空白字符位置的内容dgg=d0
删除当前光标所在位置到绝对行首的内容#d跳转符
删除跳转符范围内的#个,例如:dw
删除一个单词
dd
删除当前光标所在行整行#dd
删除包括当前光标所在行在内的#行D
删除当前光标所在行的内容,保留空行
命令模式下d命令常与跳转命令组合使用
复制、粘贴
yy
复制p
粘贴
- 小写
p
- 在光标后面或者上一行粘贴
- 删除或复制的为整行内容,则粘贴至光标所在行的下方
- 删除或复制的为非整行,则粘贴至光标所在字符的后面
- 大写
P
- 在光标前面或者下一行粘贴
- 删除或复制的为整行内容,则粘贴至光标所在行的上方
- 删除或复制的为非整行,则粘贴至光标所在字符的前面
替换
R
替换模式,替换多个字符r#
将当前光标的字符替换为#,这里的#可以是任何字符
##撤销编辑
u
撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作ctrl+r
还原最近一次的撤销操作.
重复前一次编辑操作
在末行模式下
删除
-
1,5d
删除第1到第5行 -
范围表示
表示方法 | 意义 |
---|---|
. | 光标所在行 |
$ | 最后一行 |
+# | 光标所在往后的#行 |
$-# | 倒是第#+1行 |
% | 表示全文 |
文本查找
/word
从上往下查找匹配的内容?word
从下往上查找匹配的内容n
从上往下查找匹配到的内容的下一条N
从下往上查找匹配到的内容的下一条
行号
set nu
显示行号set nonu
取消显示行号
查找并替换
#,# s/word1/word2/g
例:
:1,5 s/wj/jay/g //把第一行到第五行中的wj替换为jay
以上内容均属学习时整理,如有不详或错误,敬请指出。
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!