菜鸟科技网

vim 命令技巧有哪些实用技巧?

vim 作为一款强大的文本编辑器,其命令技巧的掌握能极大提升编辑效率,以下从基础操作、光标移动、文本编辑、搜索替换、窗口管理、宏录制与执行、高级配置等方面详细介绍 vim 的实用命令技巧。

vim 命令技巧有哪些实用技巧?-图1
(图片来源网络,侵删)

基础操作中,vim 的三种模式是核心:普通模式(默认)、插入模式和命令行模式,从普通模式进入插入模式常用命令有 i(光标前插入)、a(光标后插入)、o(下方新开一行插入)、I(行首插入)、A(行尾插入)、O(上方新开一行插入),返回普通模式按 EscCtrl+[,退出 vim 可用 q(退出)、wq(保存退出)、q!(不保存强制退出)、x(保存退出若文件有修改),保存文件用 w 文件名,另存为 saveas 新文件名

光标移动是高效编辑的基础,普通模式下,字符级移动:h(左)、l(右)、j(下)、k(上);单词级移动:w(到下一个单词首)、e(到当前单词尾)、b(到上一个单词首)、W/E/B(以空白分隔的单词为单位);行级移动:0(行首)、^(到行首第一个非空白字符)、(行尾);屏幕级移动:H(到屏幕首行)、M(到屏幕中间行)、L(到屏幕末行)、gg(到文件首行)、G(到文件末行)、nG(到第 n 行,如 5G 到第 5 行);段落移动:(到上一段开头)、(到下一段开头)。

文本编辑命令包含删除、复制、剪切与粘贴,删除:x(删除光标处字符)、nx(删除后 n 个字符)、dd(删除当前行)、ndd(删除当前行及后 n-1 行)、d$(删除到行尾)、d^(删除到行首第一个非空白字符)、dw(删除一个单词)、dG(删除到文件末尾)、dgg(删除到文件开头),复制与剪切:y(复制)与 d(剪切)用法类似,如 yy(复制当前行)、nyy(复制 n 行)、yw(复制一个单词)、y$(复制到行尾);剪切后无需额外操作,删除内容已自动存入剪贴板,粘贴:p(在光标后粘贴)、P(在光标前粘贴),若复制/剪切的是行,则粘贴在当前行下方/上方。

搜索与替换功能常用 和 进行正向/反向搜索,输入关键词后按回车,n 跳到下一个匹配项,N 跳到上一个,替换命令:s/旧内容/新内容/g(替换当前行所有匹配)、%s/旧内容/新内容/g(替换整个文件所有匹配,可加 c 确认,如 %s/old/new/gc),高级搜索:(搜索光标所在单词)、(反向搜索光标所在单词)、\v(使用正则表达式,如 \vsearch(\d+) 可匹配 "search123")。

vim 命令技巧有哪些实用技巧?-图2
(图片来源网络,侵删)

窗口管理支持多文件编辑,分屏:splitsp(水平分屏,当前文件在上)、vsplitvs(垂直分屏,当前文件在左);切换窗口:Ctrl+w+w(顺时针切换)、Ctrl+w+h/j/k/l(按方向切换到对应窗口);关闭窗口:closeCtrl+w+c(关闭当前窗口,若只剩一个窗口则退出)、onlyCtrl+w+o(关闭其他窗口,仅保留当前窗口);移动窗口:Ctrl+w+H/J/K/L(将当前窗口移动到屏幕左/下/上/右)。

宏录制与执行可重复复杂操作,录制:普通模式下按 q 加寄存器名(如 qa)开始录制,输入一系列命令,按 q 停止录制,执行:@a(执行寄存器 a 的宏),(重复执行上一次执行的宏),示例:录制将光标所在单词转为大写的宏:qagUiw(将单词转为大写),q,执行 @a 即可。

高级配置可通过 .vimrc 文件个性化设置,常用配置:set number(显示行号)、set relativenumber(显示相对行号)、set tabstop=4(制表符宽度 4)、set expandtab(将制表符转换为空格)、set autoindent(自动缩进)、set syntax on(开启语法高亮)、set hlsearch(高亮搜索结果)、set nohlsearch(关闭高亮搜索)、set ignorecase(搜索忽略大小写)、set smartcase(若搜索含大写则区分大小写),配置文件路径:Linux/macOS 下 ~/.vimrc,Windows 下 $VIM/_vimrc

操作类别 命令 功能说明
模式切换 i/a/o/I/A/O 进入插入模式(不同位置)
Esc/Ctrl+[ 返回普通模式
退出 q/:wq/:q!/:x 退出/保存退出/强制退出/保存退出
光标(字符) h/j/k/l 左/下/上/右移动
光标(单词) w/e/b/W/E/B 单词首/尾/首(跨空白分隔)
光标(行) 0/^/$ 行首/行首非空白/行尾
光标(屏幕) H/M/G/nG 屏幕首/中/末/第 n 行
删除 x/nx/dd/ndd/d$/dw/dG 删除字符/多行/到行尾/单词/到文件末
复制 y/yy/nyy/yw/y$ 复制字符/行/多行/单词/到行尾
粘贴 p/P 光标后/前粘贴
搜索 正向/反向/搜索当前单词/反向搜索当前单词
替换 s/旧/新/g:%s/旧/新/gc 当前行/文件替换(可确认)
分屏 sp/:vs 水平/垂直分屏
窗口切换 Ctrl+w+w/h/j/k/l 切换窗口/按方向切换
宏录制 q@/@@ 开始录制/执行宏/重复执行宏

相关问答FAQs:

vim 命令技巧有哪些实用技巧?-图3
(图片来源网络,侵删)
  1. 问:vim 中如何快速跳转到指定行?
    答:普通模式下输入行号后按 G,如跳转到第 100 行,输入 100G;或命令行模式下输入 100 回车。

  2. 问:vim 如何批量删除包含特定字符串的行?
    答:使用 g/字符串/d 命令,字符串 为要匹配的内容,g 表示全局匹配,d 表示删除,例如删除所有包含 "error" 的行,输入 g/error/d

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