Vi 命令总结

vi 常用命令

命令线路图

  1. 重复次数(先输入数字 n,再跟上一个命令.会让此命令执行 n 次)
  2. 移动和选择
  3. 编辑操作(删除,复制,粘贴,替换,缩排)
  4. 撤销和重复
  5. 查找替换
  6. 编辑

工作模式

0.末行模式下的命令

命令 功能
w 保存
q 退出(没保存不能退出)
q! 强行退出(不保存所编辑过的内容)
wq 保存并退出
x 保存并退出

1.新建\打开文件

$ vi 文件名.后缀

文件存在 , 打开文件

文件不存在 , 新建文件

$ vi 文件名.后缀 +(行号)

打开文件并把光标定位到指定行

如果没有指定行号那么就把光标定位到文件末尾

2.移动和选择

命令 功能
h 向左
j 向下
k 向上
l 向右

行内移动

命令 功能
w 向后移动一个单词
b 向前移动一个单词
0 行首
^ 行首(第一个非空白字符)
$ 行尾

跨行移动

命令 功能
gg 文件顶部
G 文件尾部
数字gg 移动到 数字 对应行
数字G 移动到 数字 对应行
:数字 移动到 数字 对应行

跨屏移动

命令 功能
Ctrl + f 向下翻页
Ctrl + b 向上翻页
H 屏幕顶部
M 屏幕中部
L 屏幕底部

段落移动 (用空行来区分段落)

命令 功能
{ 上一段
} 下一段

括号切换 (用于成对儿出现的括号() [] {})

命令 功能
% 括号间切换

标记(某位置需要一会儿还回来,则可以为此位置添加标记)

命令 功能
m字母 标记此位置(字母为标记名)
‘字母 回到上次标记名为 字母 标记的位置

选中文本(可视模式,可配合移动命令使用)

命令 功能
v 从光标位置开始选中文本
V 从光标所在行开始按 选中文本
Ctrl + v 垂直 方向选中文本

3.编辑操作

tips: vi 的文本缓冲区和系统的剪切板不是同一个

撤销和恢复撤销

命令 功能
u 撤销命令
ctrl + r 恢复撤销

删除(本质是剪切)

命令 功能
x 删除光标所在的 字符 或者 选中的文字
d 结合移动命令,删除到移动命令对应的内容
dd 删除一行文字,数字dd 可删除多行
D 从光标位置删除至行尾

tips: d’字母 从光标所在行删除到标记行之间的所有代码

复制\粘贴

命令 功能
y 复制(结合移动命令使用)
yy 复制一行
p 粘贴

替换(会进入替换模式 esc 退出此模式)

命令 功能
r 替换当前字符
R 替换当前光标后的字符

缩排(对代码增加缩进)

命令 功能
>> 向右增加缩进
<< 向左增加缩进
. 重复命令

4.查找和替换

常规查找

命令 功能
/str 查找str
n 查找下一个
N 查找上一个
* 查找光标所在单词,从当前位置向后查找
# 查找光标所在单词,从当前位置向前查找

tips:查找到的内容会一直高亮显示,如需要取消高亮显示,则查找一个文件不存在字符即可

替换

tips:通用格式:%s///g

全局替换

命令 功能
:%s/旧文本/新文本/g 会一次性替换文件中出现的所有旧文本

可视区域替换

命令 功能
:s/旧文本/新文本/g 替换所选内容中的旧文本

确认替换(替换之前要先确认)

命令 功能
:%s/旧文本/新文本/gc 替换所选内容中的旧文本
y yes 替换
n no 不替换
a all 替换所有
q quit 退出替换
l last 最后一个替换,并把光标移动到行首
ctrl + E 向下滚屏
ctrl + Y 向上滚屏

5.编辑

命令模式快速进入编辑模式

命令 功能
o 当前行下方插入一空行,并定位到此空行
O 当前行上方插入一空行,并定位到此空行
i 当前光标所在字符位置插入文本
I 当前行首位置插入文本
a 当前字符后添加文本
A 当前行末添加文本

编辑命令和数字的连用

eg: 输入10个#

  1. 命令模式下输入10
  2. 输入i进入编辑模式
  3. 输入*(即要重复的内容)
  4. 通过esc返回到命令模式之后就会重复执行第2和第3步达到10个#的目的

    tips: 正常情况下,进入编辑模式前,不要按数字

eg:利用可视块给多行代码增加注释

  1. 利用^移动光标到需要注释的第一行的行首
  2. 通过 Ctrl + v 进入可视块
  3. 使用 j 向下连续选中要注释的行
  4. 输入 I进入编辑模式(可视模式下无法通过 i 来进入编辑模式),并在行首插入字符#(Python中)
  5. 通过 esc 返回命令模式,则会为刚才所有选中行行首增加#

6.末行命令扩展

命令 功能
:e 文件名 会在当前窗口切换大此文件
:e . 通过 vi 内置浏览器,显示当前目录下的文件
:n 文件名 新建文件
:w 文件名 另存为文件(当前编辑的文件并不会切换到新保存的文件内)

tips: 切换文件时,必须要保证当前文件已经保存

6.分屏命令

命令 功能
:sp 横向分屏(两个屏幕一上一下),同时显示当前正在编辑的文件
:sp 文件名 横向分屏,上方显示分屏之前的文件,下方显示新打开的文件
:vsp [文件名] 纵向分屏(两个屏幕一左一右),加不加文件名效果同上

操作多个屏幕之前必须先通过ctrl + w然后再执行下面的命令

命令 功能
w 切换到下一个窗口
r 互换窗口
c 关闭当前窗口(但不能关闭最后一个)
q 退出当前窗口(如果是最后一个则退出 vi)
o 关闭其他窗口