vi 编辑器命令大全

  • vi是Linux中的文本编辑器
  • 设计的核心思想是:让程序员的手指始终在键盘的核心区域,就能完成所有的编辑操作。

基础操作

新建/打开

  • 打开/新建文件,vi 在后面跟上文件名:
    • 如果文件已经存在,会直接打开该文件
    • 如果文件不存在,会新建一个文件
    • vi test.c

打开定位到某行

  • 到打开一个文件,并定位到指定行:
    • vi 文件名 + 行数
    • 如果只带上+ 而不指定行号,会直接定位到文件末尾

文件异常处理

  • 如果vi异常退出(比如没保存就关闭了终端窗口),磁盘上可能会保存有交换文件
  • 下次再使用vi编辑文件时,会看到提醒信息,按下字母d删除交换文件即可

vi三种模式

命令行模式

  • 打开文件首先进入命令行模式
  • 可以通过命令,可以进行复制、粘贴、删除、定位等操作

插入模式

  • 也叫编辑模式,可以正常的编辑文字

底行模式

  • 光标位于屏幕的底行
  • 底行模式可以输入命令,进行文件的保存、查找、替换等
  • 要退出vi,返回到控制台,也是在底行模式下输入退出命令
  • 底行模式是vi的出口

常用命令

  • :q:(Quit)退出没有修改的文件(若文件被修改了而没有保存,则此命令无效)
  • :q!:强制退出,且不保存修改过的部分
  • :w:(Write)保存文件,但不退出
  • :x:(Exit)保存文件并退出 wq等价命令
  • :w File:另存为File给出的文件名,不退出
  • :r File:(Read)读入File指定的文件内容插入到光标位置
  • a``a:(Append)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符
  • i``I:(Insert)进入编辑状态,从当前光标之后的位置开始插入键盘输入的字符
  • o``O:(Open)进入编辑状态,并插入一新行,光标移到该新行的行首,以后键盘输入的字符将插入到光标位置
  • ESC:进入命令状态
  • :! Command:在vi中执行外部命令Command,按回车键可以返回vi继续工作

光标命令

移动光标

命令 功能 手指
h 向左 食指
j 向下 食指
k 向上 中指
l 向右 无名指

行内移动

命令 功能
w 向后移动一个单词
b 向前移动一个单词
0 行首
^ 行首,第一个不是空白字符的位置
$ 行尾

行数移动

命令 功能
gg 文件顶部(go)
G 文件末尾
数字gg 移动到数字对应行数
数字G 移动到数字对应行数
:set nu 设置显示行号
:set nonu 取消显示行号

屏幕移动(浏览代码)

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

文本操作命令

文本选中

命令 模式 功能
v 可视模式 从光标位置开始按照正常模式选择文本
V 可视行模式 选中光标经过的完整行
  • esc可以放弃选中,回到命令行模式

文本删除/剪切

命令 功能
[n]x 删除光标所在字符
[n]dd 删除光标所在行,可以ndd删除多行
  • 如果使用可视模式已选中了一段文本,d和x都可以删除选中文本
  • 命令d、x类似图形界面的剪切操作(ctrl + x)

文本复制、粘贴

命令 功能
y 复制
[n]yy 复制一行,nyy复制多行
p 粘贴
  • y0-将光标至行首的字符拷入剪贴板
  • y$-将光标至行尾的字符拷入剪贴板
  • d0-将光标至行首的字符剪切入剪贴板
  • d$-将光标至行尾的字符剪切入剪贴板
  • range y-块复制
  • range d-块剪切

撤销、恢复撤销

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

文本替换

命令 功能 模式
r 替换当前字符 命令模式
R 替换当前行光标后的字符 替换模式
  • R可以进入替换模式,替换完成后,按Esc可以返回命令模式
  • 替换命令的作用就是不用进入编辑模式,对文件进行轻量级的修改

文本查找

命令 功能
/str 查找str
n 查找下一个
N 查找上一个
  • 如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可

查找并替换

  • 需要在末行模式下执行:范围s/旧文本/新文本/g
    • s代表替换
    • g全部替换(默认换一行中的第1个)
  • 举例:
    • 10,20s/hello/HELLO/g 第10行到第20行
    • .,20s/hello/HELLO/g 当前行到第20行
    • 5,$s/hello/HELLO/g 第5行到最后一行
    • %s/旧文本/新文本/g 全文替换
  • 确认替换:%s/旧文本/新文本/gc
    • 会出现提示:
      • y-yes 替换
      • n-no 不替换
      • a-all 替换所有
      • q-quit 退出替换

分屏

命令 功能
:sp[文件名] 横向增加分屏
:vsp[文件名] 竖向增加分屏
  • ctrl + h 光标到左边窗口
  • ctrl + l 光标到右边窗口
  • ctrl + j 光标到下面窗口
  • ctrl + k 光标到上面窗口
相关推荐
top_designer20 天前
告别“静态”VI手册:InDesign与AE打造可交互的动态品牌规范
设计模式·pdf·交互·vi·工作流·after effects·indesign
放羊郎25 天前
VI-SLAM定位方案对比
slam·vi·定位·vo
庄风子1 个月前
In VI, when an arrow key is pressed, a character (e.g. “A“) is sent.
linux·vi
EleganceJiaBao2 个月前
【Neovim】Vi、Vim、Neovim 与 LazyVim:发展史
linux·编辑器·vim·vi·neovim·lazyvim
止观止2 个月前
快速了解命令行界面(CLI)的行编辑模式
emacs·命令行·vi·快捷键·cli·行编辑
applebomb8 个月前
【一句话经验】ubuntu vi/vim 模式自动设置为paste
linux·ubuntu·vim·paste·vi
翻滚吧键盘9 个月前
vim操作简要记录
vim·vi·neovim·nvim
小志biubiu10 个月前
编辑器Vim基本模式和指令 --【Linux基础开发工具】
linux·服务器·ubuntu·centos·编辑器·vim·vi
蜜獾云10 个月前
vim里搜索关键字
linux·编辑器·vim·vi·centox