小易说IT 小易说IT

Vim/Vi 常用命令

分三大模式:普通模式(默认)、插入模式、末行模式(冒号:) 打开 vi 后默认是普通模式,按 i/a/o 进入插入模式;插入模式按 Esc 回到普通模式;普通模式按 : 进入末行模式。

一、模式切换(最基础)

命令

作用

i

在光标前面插入

a

在光标后面插入

o

在光标下一行新开一行插入

O

在光标上一行新开一行插入

I

当前行行首插入

A

当前行行尾插入

Esc

退出插入模式,回到普通模式

二、普通模式:光标移动

字符移动

  • h 左、j 下、k 上、l 右(也可以方向键)

单词移动

  • w 下一个单词开头

  • b 上一个单词开头

  • e 当前单词末尾

行内跳转

  • 0 跳到行首

  • $ 跳到行尾

  • ^ 跳到本行第一个非空字符

行间跳转

  • gg 文件第一行

  • G 文件最后一行

  • nG 跳到第 n 行,如 10G 到第 10 行

  • Ctrl+f 向下翻一页(forward)

  • Ctrl+b 向上翻一页(backward)

三、普通模式:删除、剪切、复制、粘贴

vi 里删除 = 剪切 | 命令 | 作用 | |---|---| | x | 删除光标下一个字符 | | X | 删除光标前一个字符 | | dd | 删除(剪切)整行 | | ndd | 删除 n 行,如 3dd 删除 3 行 | | dw | 删除光标到单词结尾 | | d0 | 删除光标到行首 | | d$ | 删除光标到行尾 | | yy | 复制当前整行 | | nyy | 复制 n 行,2yy 复制两行 | | yw | 复制一个单词 | | p | 在光标下方粘贴 | | P | 在光标上方粘贴 | | u | 撤销(undo) | | Ctrl+r | 重做(redo) |

四、普通模式:替换、修改

  • r:替换光标处单个字符(按 r 再按新字符)

  • R:连续替换模式,Esc 退出

  • cc:清空当前行并进入插入

  • cw:删除当前单词,进入插入

五、末行模式(: 开头,回车执行)

保存退出

:w        保存
:w 文件名 另存为
:q        退出(没修改才能退)
:q!       强制退出,不保存
:wq       保存并退出
:wq!      强制保存退出
:x        保存退出(和wq类似,无修改不改动文件时间)

行号

:set nu      显示行号
:set nonu    关闭行号
:set nu!     切换行号开关

跳转

:10      跳到第10行
:$       跳到最后一行

查找替换(sed 风格)

格式::[范围]s/旧内容/新内容/[标志]

  • :s/abc/123/ 本行第一个 abc 替换成 123

  • :s/abc/123/g 本行全部abc 替换

  • :%s/abc/123/g 全文替换,g=global

  • :%s/abc/123/gc 全文替换,每次确认(c=confirm)

范围:% 代表全文;10,20 代表 10~20 行

执行 shell、其他

:!ls        临时执行shell命令ls,回车回vi
:r 文件名   把别的文件内容读到当前光标下

六、普通模式搜索(不用冒号)

  • /关键词:向下搜索,回车;n 下一个,N 上一个

  • ?关键词:向上搜索

  • *:搜索光标下这个单词

七、可视模式(选中区块)

普通模式按:

  • v 字符可视(逐字符选)

  • V 行可视(整行选中)

  • Ctrl+v 块可视(矩形块,适合列操作) 选中后: d 删除、y 复制、> 缩进、< 反缩进

八、高频速记清单(日常最常用)

i 插入,Esc回普通
h j k l 移动
dd 删除行,yy复制行,p粘贴
u撤销,Ctrl+r重做
gg 首行,G末行
/xxx 搜索
:wq 保存退出,:q! 不保存退出
:set nu 打开行号
:%s/a/b/g 全文替换