vim 常用操作
编辑模式
通过 i 命令进入编辑模式
i在当前光标所在位置进入编辑模式I在当前行的第一个字符进入编辑模式a在当前光标所在位置的下一个字符进入编辑模式A在当前行的最后一个字符进入编辑模式o在当前行的下一行插入一个新行,并进入编辑模式O在当前行的上一行插入一个新行,并进入编辑模式
也可通过
A命令进入仅添加编辑模式,此时光标在当前字符的后面,无法进行删除操作。
命令模式模式
按ESC 键退出编辑模式,这时是命令模式。
保存退出
:q退出 vim:q!强制退出 vim 不保存:w保存修改:wq保存修改并退出
移动光标
通过 h j k l 键移动光标,分别对应左、下、上、右
0移动光标到行首$移动光标到行尾gg移动光标到文件首G移动光标到文件尾nG移动光标到第 n 行, 如10G移动光标到第 10 行n+光标向下移动 n 行, 如10+光标向下移动 10 行n-光标向上移动 n 行, 如10-光标向上移动 10 行n<space>光标向右移动 n 个字符, 如10<space>光标向右移动 10 个字符n<enter>光标向下移动 n 行, 如10<enter>光标向下移动 10 行w光标向右移动一个单词,注记:wordb光标向左移动一个单词,注记:backe光标向右移动到单词结尾,注记:end
删除
字符删除
x删除光标所在位置的字符X删除光标所在位置的前一个字符
单词删除
dw删除光标所在位置到下一个单词开头的字符,包括空格 (注记:delete word)db删除光标所在位置到上一个单词开头的字符,包括空格 (注记:delete back)de删除光标所在位置到下一个单词结尾的字符 (注记:delete end)dd删除光标所在行d$删除光标所在位置到行尾的字符%d全部删除删除命令都会将删除的内容存入剪贴板,可以通过下文的粘贴命令将剪贴板的内容粘贴到文件中。
复制粘贴
yy复制光标所在行yw复制光标所在位置到下一个单词开头的字符,包括空格 (注记:yank word)p粘贴剪贴板内容到光标所在行的下一行 (注记:paste)P粘贴剪贴板内容到光标所在行的上一行
还可以使用 v 进入可视模式,然后使用 h j k l 键移动光标,选中一段文本,然后按 y 复制选中的文本,再根据需要使用 p 或 P 粘贴。(有点像鼠标拖拽选中文本,然后复制粘贴)
撤销重做
u撤销上一次操作Ctrl + r重做被撤销的操作,或者说撤销撤销操作U撤销对整行的修改.重复上一次修改
查找替换
查找字符
/word查找 word 字符串,按n查找下一个,按N查找上一个,如果想逆向查找,可以使用?word命令:set ic查找时忽略大小写 (ignore case):set is查找时显示匹配的字符串 (ignore case):set hls查找时高亮显示匹配的字符串 (highlight search)
查找括号匹配
%查找括号匹配,如()[]{},光标放在括号上,按%可以跳转到匹配的括号上:set showmatch设置括号匹配高亮
替换
r按下 r 后输入一个字符,将光标所在位置的字符替换为输入的字符R按下 R 后进入替换模式,每输入一个字符,将光标所在位置的字符替换为输入的字符,并向右移动一个字符。按ESC退出替换模式ce删除光标所在位置到下一个单词结尾的字符,并进入编辑模式c$删除光标所在位置到行尾的字符,并进入编辑模式:s/old/new将当前行第一个 old 替换为 new:s/old/new/g将当前行所有 old 替换为 new (其中g为 global 的意思):%s/old/new/g将所有行所有 old 替换为 new:%s/old/new/gc将所有行所有 old 替换为 new,替换前询问是否替换 (其中c为 confirm 的意思):n1,n2s/old/new/g将第 n1 行到第 n2 行所有 old 替换为 new
命令数字量化
vim 指令中很多命令都可以量化,如删除字符, 删除行,向某个方向移动光标等,可以量化为删除多少个字符,删除多少行,向某个方向移动多少个字符等。对于这些命令,可以在命令前加上数字,如 10dd 删除 10 行,10w 向右移动 10 个单词,10b 向左移动 10 个单词,10e 向右移动 10 个单词到单词结尾,10+ 光标向下移动 10 行,10- 光标向上移动 10 行,10<space> 光标向右移动 10 个字符,10<enter> 光标向下移动 10 行。
执行外部命令
可以通过 :!command 执行外部命令,如 :!ls 执行 ls 命令,:!date 执行 date 命令。这样可以在 vim 中执行外部命令,执行完后会返回 vim,不会退出 vim。
状态命令
Ctrl + g显示当前编辑文件的状态,包括文件名,文件状态,总行数,当前行号,光标位置百分比,当前所处列号。:set number显示行号
vim 常用操作
http://example.com/2025/08/18/vim-常用操作/