文本编辑器——VI/VIM

阅读 87

2022-04-06



文章目录

  • vi/vim
  • 命令模式--->输入模式
  • 输入模式--->命令模式
  • 命令模式--->末行模式
  • 末行模式--->命令模式
  • 末行模式
  • 命令模式
  • 在命令模式下
  • 以单词为单位移动
  • 逐字符移动
  • 行内跳转
  • 行间跳转
  • 句子间跳转
  • 段落间跳转
  • 翻屏
  • 可视化模式
  • 字符编辑
  • 删除
  • 复制、粘贴
  • 替换
  • 在末行模式下
  • 删除
  • 文本查找
  • 行号
  • 查找并替换

在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
以上内容均属学习时整理,如有不详或错误,敬请指出。


本文作者: ​​ 坏坏 ​​


精彩评论(0)

0 0 举报