文本编辑器——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
以上内容均属学习时整理,如有不详或错误,敬请指出。
本文作者: 坏坏
发布了15 篇原创文章 · 获赞 6 · 访问量 1139

猜你喜欢

转载自blog.csdn.net/qq_45668124/article/details/104505251