菜鸟科技网

vi命令核心用法有哪些?

第一部分:核心思想

在学习具体命令前,理解 vi 的核心工作模式至关重要。vi 不是一个像记事本那样的“所见即所得”编辑器,它有不同的模式,每个模式负责不同的操作。

vi命令核心用法有哪些?-图1
(图片来源网络,侵删)

三种核心模式:

  1. 普通模式

    • 这是你进入 vi 后的默认模式。
    • 在这个模式下,你不能直接输入文字,所有的按键都被当作命令来执行(如 dd 删除行,yy 复制行,hjkl 移动光标)。
    • 从其他模式按 Esc 键可以随时回到普通模式。
  2. 插入模式

    • 这是真正用来输入文本的模式。
    • 你可以通过在普通模式下输入某些命令(如 i, a, o)进入此模式。
    • 进入后,屏幕左下角通常会显示 -- INSERT -- 或类似提示。
    • Esc 键返回普通模式。
  3. 末行模式

    vi命令核心用法有哪些?-图2
    (图片来源网络,侵删)
    • 用于执行保存、退出、搜索、替换等文件级别的操作。
    • 在普通模式下输入 (冒号) 即可进入此模式,光标会跳转到屏幕最底部。
    • 执行完命令后(如 wq),会自动返回普通模式。

一个简单的类比:

  • 普通模式:就像是你手里拿着一把“瑞士军刀”,准备进行各种编辑操作。
  • 插入模式:就像是你把“瑞士军刀”收起来,拿出笔来写字。
  • 末行模式:就像是你走到文件柜前,准备给文件贴上标签(保存)或把它扔进垃圾桶(删除)。

第二部分:基本操作(生存指南)

假设你刚刚打开一个文件:vi my_file.txt

导航与移动 (在普通模式下)

命令 作用 备注
h 光标向左移动一个字符
j 光标向下移动一行
k 光标向上移动一行
l 光标向右移动一个字符
w 光标移动到下一个单词的开头 word
e 光标移动到当前单词的末尾 end of word
b 光标移动到上一个单词的开头 beginning of word
0 (零) 光标移动到当前行的开头
光标移动到当前行的末尾
gg 光标移动到文件的第一行
G 光标移动到文件的最后一行
5G 光标移动到文件的第 5 行
Ctrl + f 向前翻一页 forward
Ctrl + b 向后翻一页 backward

进入插入模式 (在普通模式下)

命令 作用 备注
i 在光标进入插入模式 insert
a 在光标进入插入模式 append
o 在当前行下方打开一个新行并进入插入模式 open below
O 在当前行上方打开一个新行并进入插入模式 open above
I 在当前行开头进入插入模式
A 在当前行末尾进入插入模式

删除、复制与粘贴 (在普通模式下)

命令 作用 备注
x 删除光标所在处的字符
dd 删除(剪切)当前光标所在整行 dd 可以和数字结合,如 3dd 删除 3 行
dw 删除(剪切)一个单词 dw 可以和数字结合,如 2dw 删除 2 个单词
yy 复制当前光标所在整行到剪贴板 yy 可以和数字结合,如 5yy 复制 5 行
p 在光标粘贴剪贴板内容 put
P 在光标粘贴剪贴板内容
u 撤销上一步操作 undo
Ctrl + r 重做被撤销的操作 redo

查找与替换 (进入末行模式)

按 进入末行模式。

命令 作用 备注
/pattern 从光标位置向下搜索 pattern 按回车执行,按 n 跳到下一个,N 跳到上一个
?pattern 从光标位置向上搜索 pattern 按回车执行,按 n 跳到上一个,N 跳到下一个
%s/old/new/g 全局替换,将文件中所有的 old 替换为 new s=substitute, =all lines, g=global
%s/old/new/gc 全局替换,但每次替换都会提示你确认 c=confirm,非常安全,推荐使用

保存与退出 (进入末行模式)

按 进入末行模式。

vi命令核心用法有哪些?-图3
(图片来源网络,侵删)
命令 作用 备注
w 保存文件 write
q 退出 vi quit
wq 保存并退出 write and quit
q! 不保存强制退出 quit with force,当你不想保存修改时非常有用
w new_file.txt 将当前文件另存为 new_file.txt
wq! 保存并强制退出(当文件没有写入权限时使用)

第三部分:进阶技巧

可视化模式

允许你选中一块文本,然后对选中的文本进行操作(删除、复制等)。

进入方式 作用 操作示例
v 字符可视化模式 从光标开始,按 hjkl 选中字符,按 d 删除,按 y 复制
V (大写) 行可视化模式 自动选中当前整行,按 jk 选中多行,按 d 删除,按 y 复制
Ctrl + v 块可视化模式 vi 最强大的功能之一!可以选中一个矩形区域的文本,常用于批量注释或编辑代码。

批量注释/取消注释 (块可视化模式示例)

假设你想注释 Python 代码中第 5 到 10 行的 符号:

  1. 5G 跳到第 5 行。
  2. Ctrl + v 进入块可视化模式。
  3. j 5 次,选中第 5 到第 10 行(光标在第 10 行)。
  4. Shift + i (大写 I),进入插入模式,光标会跳到所有选中行的开头。
  5. 输入 (井号加一个空格)。
  6. Esc 键,神奇的事情发生了!vi 会在所有选中行的开头都插入 。

撤销与重做分支

vi 不仅可以撤销到上一步,还可以在不同的撤销历史之间切换。

命令 作用
u 撤销
Ctrl + r 重做
g- 回到上一个撤销点
g+ 回到下一个重做点

第四部分:总结与练习

核心流程总结

  1. 打开文件vi filename.txt
  2. 进入普通模式:这是你的起点,如果不确定你在哪个模式,狂按 Esc 准没错。
  3. 移动光标:使用 hjkl, w, b, 0, 等命令。
  4. 编辑文本
    • i, a, o 进入插入模式,输入文字。
    • Esc 回到普通模式
    • 使用 dd, yy, p, x 等命令进行编辑。
  5. 保存退出:按 进入末行模式,输入 wqq!

如何练习?

最好的学习方式就是动手实践,你可以:

  1. 在终端输入 vivim,然后输入 helpvim 自带了非常详尽的帮助文档,你可以用 q 退出。
  2. 创建一个练习文件,vi practice.txt
  3. 尝试输入一段文字,然后尝试:
    • 删除一个单词 (dw)。
    • 复制一行 (yy),然后在另一行粘贴 (p)。
    • 查找某个单词 (/your_word)。
    • 替换所有 "foo" 为 "bar" (%s/foo/bar/gc)。
    • 保存并退出 (wq)。

vi 的精髓在于普通模式,当你熟练掌握了普通模式下的各种命令后,你会发现文本编辑变得行云流水,效率远超鼠标点击,初学时感到困惑是正常的,坚持下去,你会爱上它的!

分享:
扫描分享到社交APP
上一篇
下一篇