(转)vim命令集

本文详细介绍了 Vim 编辑器的各种实用命令,包括文件打开方式、文本补全、移动、复制、删除等基本操作,以及如何进行窗口管理和多文件编辑。适合初学者快速上手及高手查阅。


声明:因为linux中频繁使用vim工具,所以搜索了一下,找了一篇命令集比较详细的博客,原文复制过来作为备份,以供平时查阅参考,如果侵权请私信右侧微博,一定会进行删除。原博文网址:vim命令集博客原文

Vim 打开命令
 vim FileName — 打开文件 FileName,并将光标置于第一行首
 vim +n FileName — 打开文件 FileName,并将光标置于第 n 行首
 vim + FileName — 打开文件 FileName,并将光标置于最后一行
 vim + /pattern File — 打开文件 File,并将光标置于其中第一个于 pattern 匹配的字符
串处
 vim –r FileName — 在上次正用 vi 编辑 FileName 发生系统崩溃后,恢复 FileName
 vim File1 … Filen — 打开多个文件,依次对之进行编辑
 vim -o File1 … Filen — 用水平分隔的方式打开多个文件然后进行编辑
 vimdiff filename1 filename2 — 用垂直分割的方式打开两个文件 filename1,filename2
然后显示出两个文件的不同的比较

插入模式

vim 补全
 <c-a> — 重复上次的编辑动作
 <c-x><c-l> — 整行补全
 <c-x><c-n> — 根据当前文件里关键字补全
 <c-x><c-k> — 根据字典补全
 <c-x><c-t> — 根据同义词字典补全
 <c-x><c-i> — 根据头文件内关键字补全
 <c-x><x-]> — 根据标签补全
 <c-x><c-f> — 补全文件名
 <c-x><c-d> — 补全宏定义
 <c-x><c-v> — 补全 vim 命令
 <c-x><c-u> — 用户自定义补全方式
 <c-x><c-s> — 拼写建议

普通与命令行模式

移动
ctags 快捷键

 [{ — 转到上一个位于第一列的”{”
 }] — 转到下一个位于第一列的”{”
 { — 转到上一个空行
 } — 转到下一个空行 ([ and ] 也分别是两个指令)
移动光标
 h — 向右
 j — 向下
 k — 向上
 l — 向左
 0 — 这是数字 “0”:移动到这一行的最前面字符处
 ^ — 移动到这一行的最开始字符处
 <c-p> — 光标上移一行
 <c-n> — 光标下移一行
 num+ — 光标下移到 n 行头,若没有 n 光标移到下行行头
 num- — 光标上移到 n 行头,若没有 n 光标移到上行行头
 num$ — 光标下移到 n 行尾,若没有 n 则移动到本行行尾
 num<Enter> — 向下移动 n 行,无 n 移动一行
 H — 光标移动到这个屏幕的最上方哪一行
 M — 光标移动到这个屏幕的中央哪一行
 L — 光标移动到这个屏幕的最下方哪一行
 nG — n 为数字.移动到这个文件的第 n 行.若没有 n 则移动到最后一行
 gg — 移动到这个文件的第一行,相当于 1G
屏幕滚动
 <c-f> — 屏幕“向下”移动一页,相当于<Page Down>按键
 <c-b> — 屏幕“向上”移动一页,相当于<Page Up>按键
 <c-d> — 屏幕“向下”移动半页
 <c-u> — 屏幕“向上”移动半页
 <c-e> — 屏幕向下滚一行
 <c-y> — 屏幕项上滚一行
 nz — 将第 n 行滚至屏幕顶部。不指定 n 时将当前行滚至屏幕顶
 :$ — 屏幕滚到文章最后一行
 :0 — 屏幕滚到文章最开始一行
跳转
 W / w — 光标右移一个字至字首.
 B / b — 光标左移一个字至字首.
 E / e — 光标右移一个字至字尾.
 ( — 光标移到上个句子句首.
 ) — 光标移到下个句子句首.
 { — 光标移到上个段落句首.
 } — 光标移到下个段落句首.
 f[char] — 光标跳转到本行下一个字符 char 处( char 指代任意字符 )
 F[char] — 光标跳转到本行上一个字符 char 处( char 指代任意字符 )
 t[char] — 光标跳转到本行下一个字符 char 的前一个字符处( char 指代任意字符 )
 T[char] — 光标跳转到本行上一个字符 char 的后一个字符处( char 指代任意字符 )
 /[word] — 光标跳转到下一个字符串 word 处,并把所有 word 单词高亮显示( word 指
代任意字符串,并且可以使用 正则表达式 )
 ?[word] — 光标跳转到上一个字符串 word 处,并把所有 word 单词高亮显示( word 指
代任意字符串,并且可以使用 正则表达式 )
 # — 光标跳转到下个与光标所在处单词相同的单词,并把所有与光标所在处的相同的单
词高亮显示
 * — 光标跳转到上个与光标所在处单词相同的单词,并把所有与光标所在处的相同的单
词高亮显示
 gd — 将与光标所在处的单词相同的单词全部高亮显示,并跳转到上一个高亮显示的单词
 gD — 将与光标所在处的单词相同的单词全部高亮显示,并跳转到最前面一个高亮显示
的单词
 `. — 跳转至上次编辑位置
 `c — 将光标转移到书签 c 处( c 为任意字符 )
 n — 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个,但其实它只
会在高亮字符中切换)
 N — 上一个匹配(同上)
操作
插入操作

 行操作
 I — 在光标所在行首插入文本
 A — 在光标所在行尾添加文本
 o — 在光标所在行下面添加一行
 O — 在光标所在行上面添加一行
 nS — 从当前行开始,删除向下 n 行并进入编辑模式,若无 n 删除当前所在行,
并进入编辑模式
 字符操作
 i — 在光标前插入文本
 a — 在光标后插入文本
 r — 替换光标所在处字符,结束替换
 R — 替换多个字符,以按下 [Esc] 键标志替换结束
 ns — 从当前光标位置处开始,删除 n 个字符并进入编辑模式,若无 n 删除一个
字符,并进入编辑模式
 :r [filename | !cmd] — 在编辑数据中读入一个文件内容数据或一个命令的返回
结果,并把这些数据添加到光标所在行后面
复制与删除与粘贴
 字符操作

 nx — 向后删除 n 个字符,若没有 n 向后删除一个字符
 nX — 向前删除 n 个字符,若没有 n 向前删除一个字符
 d0 — 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
 d$ — 删除游标所在处,到该行的最后一个字符
 y0 — 复制光标所在的那个字符到该行行首的所有数据
 y$ — 复制光标所在的那个字符到该行行尾的所有数据
 p — 将已复制的数据在光标下一列贴上
 P — 将已复制的数据在光标上一列贴上
 行操作
 ndd — 删除光标所在的向下 n 列,若没有 n 删除游标所在的那一整列
 dnG — 删除光标所在到第 n 行的所有数据,若没有 n 删除光标所在到最后一
行的所有数据
 nyy — 复制光标所在的向下 n 行,若无 n 复制游标所在的那一行
 ynG — 复制游标所在列到第 n 行的所有数据,若无 n 复制游标所在行到最后一
行的所有数据
 J — 将光标所在列与下一列的数据结合成同一列
撤销与重做
 . — 重复前一个操作
 u — 复原前一个操作
 <c-r> — 重做上一个操作
区块操作
 进入标记文本模式

 v — 进入标记文本模式,单字符模式
 V — 进入标记文本模式,行模式
 <c-v> — 进入标记文本模式,列模式,类似于 UE 的列模式
 对标记文本模式中区域选择
 aw — 选中一个单词,含单词后的空格
 as — 选中一个句子,含句号后的空格
 ap — 选中一个段落,含段落后的空格
 ab — 选中()括号中的所有内容,含()
 aB — 选中{}括号中的所有内容,含{}
 iw — 选中一个单词,不含单词后的空格
 is — 选中一个句子,不含句号后的空格
 ip — 选中一个段落,不含段落后的空格
 ib — 选中()括号中的内容,不含()
 iB — 选中{}括号中的内容,不含{}
 移动标记文本模式中光标位置
 o — 光标在选择区域中的对角线之间的跳转
 O — 光标在选择区域中的横纵之间的跳转
 当在 V 与 <c-v> 模式中我们除了 o,O 来移动光标位置外,还可以通过移动光
标位置中一些方法来移动光标位置(不是所有而是其中一些)
 对标记文本模式中数据操作
 ~ — 将选中块中的内容大小写翻转
 u — 将选中块中的内容转成小写
 U — 将选中块中的内容转成大写
 y — 复制选中块中的内容
 d/D/x/X — 删除选中块中的内容
行移动操作
 >> — 将当前行右移一个单位
 << — 将当前行左移一个单位(一个 tab 符)
 == — 自动缩进当前行
 :n1,n2 co n3 — 将 n1 行到 n2 行之间的内容拷贝到第 n3 行下.若无『,n2』则复制
n1 到 n3 行下
 :n1,n2 m m3 — 移动 n1 行到 n2 行之间的内容移至第 n3 行下.若无『,n2』则将
n1 内容移到 n3 行下
 :n1,n2 d — 删除 n1 行到 n2 行之间的内容,『,n2』则将 n1 行删除
 :n1,n2 y — 复制 n1 行到 n2 行之间的内容,『,n2』则将 n1 行复制
字符替换
 :[range]s/{pattern}/{string}/[flag] [count]

窗口

打开窗口的命令以下几个
 打开标签
 :tabe 标签名
 横向切割窗口
 :new 窗口名 (保存后就是文件名)
 :split 窗口名 (也可以简写为 :sp 窗口名)
 纵向切割窗口名
 :vsplit+窗口名(也可以简写为 :vsp+窗口名)
窗口切换
 <c-w>[h | j | k | l | ←|↓|↑|→]
移动窗口
 <c-w>t — 将光标移动到最上方的窗口
 <c-w>b — 将光标移动到最下方的窗口
ctags
窗口大小调整
 纵向调整

 <c-w>+ — 纵向扩大(行数增加)
 <c-w>- — 纵向缩小 (行数减少)
 :res(ize) num — 例如: :res 5,显示行数调整为 5 行
 :res(ize)+num — 把当前窗口高度增加 num 行
 :res(ize)-num — 把当前窗口高度减少 num 行
 横向调整
 :vertical res(ize) num 指定当前窗口为 num 列
 :vertical res(ize)+num 把当前窗口增加 num 列
 :vertical res(ize)-num 把当前窗口减少 num 列
多窗口操作
 :qa(ll) — 退出所有窗口,但是如果你有一个窗口发生改写但未保存 vim 是不会退出的
 :wa(ll) — 保存所有修改过的窗口
 :wqall — 保存所有修改过的窗口并关闭,然后退出 vim:qall! 强制退出所有窗口,然后退
出 vim
 :argdo [命令] — 对所有待编辑的窗口都执行 argdo 后面跟的命令
 :only — 了编辑以外的窗口,但是那些窗口中要是有文本被改写过并且没有保存那么操作
将失败
vim 多文本编辑
 :n 编辑下个文件
 :N 编辑上个文件
 :files 列出目前这个 vim 的打开的所有文件
保存与退出
 :q — 退出 vim 返回到 shell,若有修改未被保存,vi 在末行给出提示信息并不退出 vim
到 shell
 :q! — 退出 vim 返回到 shell,放弃未保存的修改
 

<think>好的,用户想查找vim的常用命令集合,我需要根据提供的引用内容整理一个清晰的汇总。首先,需要确认用户的需求是全面的常用命令,可能包括光标移动、文本编辑、查找替换、文件操作等。引用中的信息比较分散,需要分类整理。 先看引用[1]提到了set命令,比如显示行号、设置缩进等,这部分属于配置命令,应该单独分类。引用[2]和[4]详细说明了光标移动、复制粘贴、删除撤销等操作,这些是基础编辑命令。引用[3]提到了文件上传下载和系统命令,可能用户也需要这些,但可能更关注编辑器内部命令。引用[4]里的替换和查找命令也很重要。 接下来需要分门别类,比如光标移动、文本操作、复制粘贴、查找替换、文件操作、多窗口处理、配置命令等。每个类别下引用对应的命令,并确保语法正确,例如使用$...$格式的行内代码,用$$...$$的独立公式,但这里可能用不上数学公式,主要是代码块和命令示例。 注意用户提到的系统级指令要求,所有行内代码要用$...$,但可能这里的命令如:set number应该用反引号还是用$?需要确认。根据示例,用户可能希望用反引号,但根据系统指令,可能需要用$...$包裹,但实际在中文环境下,可能更常见的是用反引号或代码块。不过根据用户给的示例,他们可能希望代码用代码块,而变量用$...$。需要仔细处理。 例如,在回答中,每个命令可能需要用代码块或行内代码。但根据系统指令,行内数学表达式用$...$,但vim命令不属于数学表达式,所以可能需要使用反引号或者代码块。但用户提供的示例中,Python代码用了代码块,而问题中的示例里的vim命令用了普通段落。可能需要按照用户示例来处理,即用代码块包裹命令,而配置选项如:set number放在行内用反引号。但根据系统指令,可能需要将行内的代码如变量用$...$,但这里可能不需要,因为主要是文本命令。可能用户希望的是正确使用LaTeX格式,但vim命令本身是文本,所以可能需要用反引号或者代码块。 现在需要整理各个引用中的命令: 引用[1]的set命令:显示行号、tab设置、编码、粘贴模式等。 引用[2]:光标移动($、^、G、gg)、复制(yy、p)、剪切(dd)、编辑命令(u、ctrl+r、~、R、r、x、X、cw)、分屏(vs)、替换(%s///g)。 引用[4]:删除命令(dd、dw、dG、d$、daw、x)、撤销恢复(u、ctrl+r)、查找(/abc、n/N)、替换(r、R)。 引用[3]中的部分命令可能不太相关,比如scp、tail,但用户可能需要的是vim内部命令,所以可以忽略外部系统命令。 分类整理: 1. 光标移动: - 行内:$(行末)、^(行首) - 全文:G(末行)、gg(首行)、nG(第n行) - 方向键:h j k l 2. 文本编辑: - 删除:dd(行)、dw(单词)、d$(到行末)、dG(到文件尾)、x(字符) - 撤销:u,恢复:Ctrl+r - 替换:r(单个字符),R(替换模式),cw(修改单词) - 大小写切换:~ 3. 复制粘贴: - 复制:yy,nyy - 粘贴:p,np 4. 查找替换: - 查找:/abc,n/N - 替换:%s/old/new/g,r,R 5. 多窗口: - vs 分屏,Ctrl+ww切换 6. 配置命令: - :set number,:set tabstop=4,:set paste等 7. 底行模式命令: - 保存:w,退出:q,强制:! 需要确保每个部分都有对应的引用标记,例如[^1][^2][^4]。 然后生成相关问题,可能涉及配置优化、高级编辑技巧、插件使用等。根据引用内容,可能的问题包括如何配置vim,如何进行高效查找替换,分屏操作等。</think>### Vim常用命令集汇总 Vim作为功能强大的文本编辑器,常用命令可分为**光标移动**、**文本编辑**、**复制粘贴**、**查找替换**、**多窗口操作**和**配置命令**等类别。以下为分类整理: --- #### 一、光标移动 1. **行内移动** - `$`:移动到行末 - `^`:移动到行首[^2] - `w`:跳到下一个单词开头,`b`:回退到上一个单词开头 2. **全文移动** - `gg`:跳到文件首行 - `G`:跳到文件末行 - `nG` 或 `:n`:跳到第 `n` 行[^2] 3. **方向键** - `h`(左)、`j`(下)、`k`(上)、`l`(右) --- #### 二、文本编辑 1. **删除操作** - `dd`:删除整行(`ndd` 删除 `n` 行) - `dw`:删除当前单词 - `d$`:删除至行末 - `x`:删除光标所在字符(`nx` 删除后 `n` 个字符)[^4] 2. **撤销与恢复** - `u`:撤销操作 - `Ctrl + r`:恢复撤销[^2][^4] 3. **替换与修改** - `r`:替换单个字符(`nr` 替换后 `n` 个字符) - `R`:进入替换模式,覆盖后续字符[^4] - `cw`:删除当前单词并进入插入模式 4. **大小写切换** - `~`:切换光标所在字符的大小写[^2] --- #### 三、复制与粘贴 - `yy`:复制整行(`nyy` 复制 `n` 行) - `p`:粘贴到光标后(`np` 粘贴 `n` 次) - `dd` + `p`:剪切并粘贴整行[^2] --- #### 四、查找与替换 1. **查找** - `/keyword`:向前查找 `keyword`,按 `n` 继续查找,`N` 反向查找[^4] 2. **替换** - `:%s/old/new/g`:全局替换所有匹配的 `old` 为 `new` - `:s/old/new/g`:替换当前行的匹配项[^2][^4] --- #### 五、多窗口操作 - `:vs filename`:垂直分屏打开文件 - `Ctrl + ww`:切换分屏焦点 --- #### 六、配置命令(底行模式) - **显示设置** ```vim :set number " 显示行号 :set tabstop=4 " 设置 Tab 为 4 空格 :set expandtab " 将 Tab 换为空格[^1] ``` - **编码与格式** ```vim :set encoding=utf-8 " 设置显示编码 :set fileencoding=utf-8 " 设置文件保存编码[^1] ``` - **粘贴模式** ```vim :set paste " 避免粘贴时自动缩进 :set nopaste " 退出粘贴模式[^1] ``` --- #### 七、文件操作 - `:w`:保存文件 - `:q`:退出 Vim - `:wq` 或 `:x`:保存并退出 - `:q!`:强制退出不保存 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值