vim 技巧

  • u : 取消上次修改
  • <ctrl>-r : 重做上次修改
  • U : 取消改行所有修改,再按一次,重做该行所有修改
  • ZZ : 保存退出
  • o : 在下一行创建新行,进入编辑
  • O : 在上一行创建新行,进入编辑
  • I : 在一行开始处插入
  • A : 在一行结尾处插入
  • w : 移动到下一单词
  • b : 移动到上一单词
  • $ : 移到行末
  • ^ : 移到行首非空白处
  • 0 : 移到行首
  • f : 在一行中查找字符
  • t : 在一行中查找字符,光标停留在要查找的前一字符
  • <ctrl>-g : 显示光标当前位置信息
  • <ctrl>-k : 键入特殊字符,digraphs命令可以列出要显示的字符
  • <ctrl>-u : 向上滚动半屏
  • <ctrl>-d : 向下滚动半屏
  • . : 重复上次修改或者删除命令
  • J : 合并行
  • r : 替换字符
  • ~ : 修改字符大小写
  • q : 定义宏,记录命令
  • @ : 使用宏。如qx --> 操作 --> q --> @x
  • set hlsearch : 搜索时设置高亮状态
  • set incsearch : 增量搜索
  • p : 在光标后粘贴
  • P : 在光标前粘贴
  • m : 创建标签
  • ` : 使用标签
  • ‘ :使用标签,在行首
  • marks : 显示标签
  • y : 复制操作yank,yy复制一行;y`a,复制到标签a
  • !motion command : 对选择区域执行命令,!!表示区域为当前行
  • !!data : 在当前行输入日期
多问件编辑
  • next : 编辑下一个文件,多文件编辑;3next,编辑下面第三个文件
  • Next : 编辑前一个文件
  • previous : 编辑前一个文件,多文件编辑
  • args : 编辑的当前文件信息,多文件编辑。vim a b c等打开多个文件
  • first : 编辑第一个文件
  • last : 编辑最后一个文件
  • <ctrl>-^ : 在当前文件和一个文件之间切换,3<ctrl>-^,编辑下面第3个文件
  • split : 上下分割窗口
  • vs : 左右分割窗口
  • <ctrl>-ww : 窗口间切换
  • n<ctrl>-w-+ : 当前窗口增大n行
  • n<ctrl>-w-- : 当前窗口减小n行
  • n<ctrl>-w-= : 窗口平均大小
  • buffers : 多文件的状态
  • ls : 显示buffers的情况,和buffers类似;使用:b n,打开第n个文件
  • buffer : 选择buffer
  • hide : 隐藏窗口
  • set hidden :设置当前文件为隐藏状态
  • bnext : 下一个buffer
  • bNext : 前一个buffer
  • sbuffer : 编辑buffer,并启动split窗口
视图模式
  • v : 进入视图模式
  • V : 进入视图模式,行
  • <ctrl>-v : 进入视图模式
  • <Esc> : 退出视图模式
  • > : 视图模式下向右移动table
  • < : 视图模式下向左移动table
  • = : 视图模式下根据上一行进行对齐,或者缩进
  • I : 块模式下插入,按下<esc>,针对每行生效,短行无效;同样的命令有A(短行有效),c,r等
  • 注:如果<ctrl>-v不可用,可以~/.vimrc中去掉对<ctrl>-v, <ctrl>-c, <ctrl>-x, <ctrl>-z的对ms风格命令的映射
编程相关
  • set background? : 查看背景色
  • set background=light(dark) : 设置背景色
  • set filetype? : 查看文件类型
  • set filetype=c : 设置文件类型为c
  • >> : 行右移一个table,由set shiftwidth=4设置,5>>则处理5行
  • << : 行左移一个table
  • set cindent : 设置c风格,适用于c, c++, java,优先;另有set smartindent和set autoindent供选择
  • <ctrl>-i : 编辑模式下右移一个table
  • <ctrl>-d : 编辑模式下左移一个table
  • [<ctrl>-i : 从开始处搜索光标处的关键字,包括#include
  • ]<ctrl>-i : 从光标处搜索光标处的关键字,包括#include
  • gd : 搜索光标处的变量,常用
  • gD : 搜索光标处的全局变量
  • [<ctrl>-d : 从开始处搜索光标处的宏定义,包括#include
  • ]<ctrl>-d : 从光标处搜索光标处的宏定义,包括#include
  • [d : 显示搜索到的首个宏定义,另外有]d
  • [D : 列表形式显示搜索到的所有宏定义,另外有]D
  • % : 匹配括号{}, [], (), /**/, #if #endif
  • >% : 右移括号中的内容,在{处执行>%,但是{}本身也会移动
  • >i{ : 右移括号内的内容,先定位到{处,按下>,接着按下i{,则只移动括号中的内容
  • 视图移动:1、移动到{,2、v进入视图模式,3、i{或者i}选择括号内的内容,4、>或者<右移或者左移
  • K : 查找cursor处关键词的帮助文档,如在mkdir处,执行K,则进入mkdir的帮助文档,适用于查找c或c++的接口函数
  • <ctrl>-] : 跳到cursor处的函数定义处
  • <ctrl>-t : 跳回上一个tag
  • tag <func> : 跳到func的tag定义处
  • tag /<reg> : 使用规则表达式查找tag,定位到查找到的第一个tag
  • ts : 列出搜索到的所有tag
  • tag : 跳到下一个tag,2tag,跳到下面第二个tag;2<ctrl>-t,跳到前面第二个tag处
  • tnext:下一个tag
  • nprevious : 上一个tag
  • trewind :第一个tag
  • tlast : 最后一个tag
  • tags : 列出所有的tag
  • stag : 打开信窗口显示tag

  • set list : 显示tab,空格,结束符等
  • set ffs=unix : 显示^M换行符
  • set listchars : 设置tab,空格,结束符的显示方式
  • set expendtab : 在输入tab时转化为空格
  • <ctrl>-v-<tab> : 强制插入tab,不转换为空格

  • sort : 排序。1、定位到排序的行,2、v视图模式,3、选择要排序的行,4、sort排序
编译
  • make : 编译工程
  • clist : 列出编译错误
  • cnext : 下一个编译错误
自动补齐(插入模式下)
  • <ctrl>-n / <ctrl>-p : 自动补齐,搜索所有关键字;在此模式下,继续按<ctrl>-n或者<ctrl>-p,则在列表中向后或者向前搜索。
  • <ctrl>-x + <ctrl>-L : 行补齐
  • <ctrl>-x + <ctrl>-f : 文件名补齐
  • <ctrl>-x + <ctrl>-d : 宏定义补齐,也包含引用文件的宏
  • <ctrl>-x + <ctrl>-i : 当前文件和引用文件内关键字补齐
  • <ctrl>-x + <ctrl>-k : 字典关键字补齐
  • <ctrl>-x + <ctrl>-] : tags补齐 
  • <ctrl>-x + <ctrl>-y : 编辑模式向下滚动
  • <ctrl>-x + <ctrl>-e : 编辑模式向上下滚动
  • set ignorecase : 忽略大小写
  • set infercase : 区分大小写
  • set complete=key,key,key : 设置关键字所有范围,其中key包括(.bdiktuw)。.表示当前文件;b表示当前加载的文件,即buffers;d表示当前文件以及引用文件的宏定义;i表示当前文件以及引用文件;k表示字典;k{file},无括号,表示具体文件;t表示tags;u表示未装载的buffers;w表示其他窗口的文件
  • set disrectory=file,file,file : 指定具体文件
大小写转换:
  • guu : 行小写
  • gUU : 行大写
  • g~~ : 行大小写转换
  • guw : 单词小写
  • gUw : 单词大写
  • g~w : 单词大小写转换

其他常用命令:
  • yiw : 复制光标处的单词
  • <ctrl>-r-“: 在命令模式下粘贴
  • <ctrl>-r + <ctrl>-w : 将光标下的关键字复制到命令行模式
正则表达式:
  • \<, \> : 表示关键词的开始和结束
  • \+, \=, * : 1-N,0-1,0-N
  • \{m,n} : 重复m-n次。\{m,},至少m次;\{,m},至多m次;\{m},m次
  • \a, \d : 字母,数字,不能在[ ]中
  • [aeiou] : aeiou其中之一
  • [^aeiou]:除了aeiou之外的字符之一
  • [[:upper:]], [A-Z], \u : 大写字母
  • [[:lower:]], [a-z], \l : 小写字母
  • \(\)  \n: 集合,\n表示哪个集合,如所有注释/* */,可表示为\(\/\)\(\*\).*\2\1
  • \| : 或
  • set nomagic :该选项打开,则*,.,[,]没有特殊含义,作为普通字符使用,如果使用正则表达式,需要使用跳脱符\。
去除dos文本格式的^M换行符
  • 使用dos2unix命令,需要下载
  • 在vim中执行命令:%s/^M//g (其中^M需要使用ctrl+V和ctrl+M输入)
<think>我们正在处理用户关于Vim编辑器高效使用技巧和快捷键的查询。根据引用内容,我们有三份参考资料: [^1]:Vim快捷键大全,包含基础操作、光标移动、编辑文本、查找替换、分屏操作、可视化模式和模式切换流程图。 [^2]:vim文本编辑器常用的命令及快捷键,包括插入模式切换、删除、撤销、保存退出、光标移动、删除空行和多余空格等。 [^3]:介绍了vi/vim的区别,强调vim是vi的升级版,具有更多特性如语法高亮和可视化操作。 用户需求是学习或提升Vim使用技巧,特别是高效技巧和快捷键。因此,我们将整合引用中的信息,并按照逻辑结构组织回答。 回答结构: 1. 先介绍Vim的基本概念和模式(因为高效使用离不开对模式的理解)。 2. 按类别组织快捷键和技巧:基础操作、光标移动、编辑文本、查找替换、分屏操作、可视化模式等。 3. 在适当位置强调高效技巧,比如组合命令、重复操作等。 4. 最后,可以提及一些高级技巧或配置建议(但引用中没有提供太多高级内容,所以主要围绕已有引用)。 注意:引用中有些快捷键可能有重复,我们以最全面的为准,并注意避免冲突。 根据引用[1]和[2],我们可以整理以下内容: - 模式切换:i(当前位置插入)、a(下一位插入)、ESC(退出插入模式) - 光标移动:0(行首)、^(行首第一个非空白字符)、$(行尾)、G(文本末尾)、gg(文本开头)[注意:引用[2]中0是行首,G是文本末尾;引用[1]中可能还有更多,如h,j,k,l等] - 编辑:dd(删除行)、u(撤销)、Ctrl+r(重做)[引用[2]没有提到重做,但这是常用操作,可以补充?但注意引用中未提及的我们不要随意添加,除非是常识] 但是引用[2]中提到了2dd(删除两行),说明可以加数字前缀。 - 保存退出:wq(保存退出)、q!(强制退出不保存) - 查找替换:引用[1]中有查找替换类别,但引用[2]中提到了删除空行(:g/^$/d)和删除多余空格(%s/ */ /g),我们可以归入此类。 - 分屏操作:引用[1]中单独有分屏操作,但引用[2]未提及,所以主要参考引用[1]。 - 可视化模式:引用[1]提到,引用[2]未提及。 另外,引用[2]还提供了一些类似Bash的快捷键(如Ctrl+a, Ctrl+e, Ctrl+u, Ctrl+k, Ctrl+l),但注意这些是在Vim的插入模式或命令行模式中可能可用的(实际上,这些是Readline的快捷键,在Vim的插入模式下不一定默认启用,除非做了映射)。因此,我们需要谨慎:引用[2]中列出的快捷键有些可能是针对终端本身的,而不是Vim的。但引用[2]的标题明确是“vim文本编辑器常用的命令及快捷键”,所以我们还是按照引用内容列出,但注明使用场景。 根据引用[3],我们知道vim是vi的升级版,支持更多特性,如语法高亮和可视化操作。 由于用户要求高效使用技巧,我们可以在介绍快捷键的同时,加入一些组合使用的例子,比如如何快速删除一个单词,如何快速修改一个单词等。 考虑到引用内容有限,我们不会添加引用中没有的内容,但可以合理组织。 计划按以下顺序组织: 1. Vim模式简介(正常模式、插入模式、可视模式、命令行模式等) 2. 高效技巧按功能分类: a) 模式切换技巧(快速进入插入模式并返回) b) 光标移动(快速定位) c) 文本编辑(删除、复制、粘贴、撤销等) d) 查找与替换 e) 分屏操作 f) 可视化模式 g) 保存退出 3. 一些高效编辑示例(如快速删除一行,快速修改一个单词等) 4. 高级技巧(如果引用中有则包括,如删除空行、多余空格等) 注意:引用[2]中有些命令是在命令行模式下执行的(如:g/^$/d),我们将其归入查找替换或高级技巧。 最后,根据要求,生成相关问题。 注意:在回答中,我们引用的内容要标注引用标识。由于我们的引用来自三处,我们会在适当位置标注[^1][^2][^3]。注意,同一个技巧可能出现在多个引用中,我们可以同时标注。 开始组织内容:</think>### Vim编辑器高效使用技巧与快捷键指南 #### 一、核心模式与基础操作 1. **模式切换**(高效编辑核心) - `i`:光标处进入插入模式 [^2] - `a`:光标后进入插入模式 [^2] - `ESC`:返回普通模式 [^2] - `v`:进入可视模式(文本选择)[^1] - `:`:进入命令行模式 [^1] *技巧:用 `Ctrl+[` 替代 `ESC` 手指移动更短* 2. **保存与退出** ```vim :wq " 保存并退出 [^2] :q! " 强制退出不保存 [^2] :w !sudo tee % " 无权限时保存文件(需sudo权限) ``` #### 二、高效光标移动(普通模式) | 快捷键 | 功能 | 效率场景 | |--------|-----------------------|----------------------| | `0` | 跳至行首 | 替代连续按 `h` 键 [^2] | | `^` | 跳至行首非空白字符 | 快速定位代码起点 [^1] | | `$` | 跳至行尾 | 避免重复按 `l` 键 [^1] | | `gg` | 文件开头 | 大型文件快速定位 [^1] | | `G` | 文件末尾 | [^2] | | `5G` | 跳至第5行 | 精准行定位 | | `Ctrl+o` | 返回上次位置 | 跨文件回溯 | #### 三、文本编辑技巧 1. **删除与修改** - `dd`:删除整行 [^2] - `2dd`:删除两行(数字可自定义)[^2] - `dw`:删除一个单词 - `ciw`:改写当前单词(保留插入模式) - `xp`:交换相邻字符(如修复 `teh` → `the`) 2. **撤销与重做** - `u`:撤销操作 [^2] - `Ctrl+r`:重做操作 [^1] *技巧:组合使用可快速测试代码修改* 3. **复制粘贴** - `yy`:复制当前行 - `p`:粘贴到光标后 - `"*p`:从系统剪贴板粘贴(需 `+clipboard` 支持) #### 四、高级效率工具 1. **查找替换** ```vim /pattern " 向下搜索 [^1] ?pattern " 向上搜索 :%s/old/new/g " 全局替换 [^2] :g/^$/d " 删除所有空行 [^2] ``` 2. **分屏操作** [^1] ```vim :sp " 水平分屏 :vsp " 垂直分屏 Ctrl+w+h " 切换到左分屏 Ctrl+w+l " 切换到右分屏 Ctrl+w+q " 关闭当前分屏 ``` 3. **宏录制(高效重复操作)** 1. `qa`:开始录制宏到寄存器 `a` 2. 执行操作序列(如修改代码格式) 3. `q`:停止录制 4. `@a`:回放宏 *示例:用 `qqjddq` 录制“删除当前行并下移”,`5@q` 执行5次* #### 五、可视化模式进阶 | 命令 | 功能 | |----------|--------------------------| | `V` | 按行选择 | | `Ctrl+v` | 块选择(列编辑)[^1] | | `I` | 块选择后多行同时插入 | | `A` | 块选择后多行追加内容 | *应用场景:批量注释代码(`Ctrl+v` 选择列 → `I` → `//` → `ESC`)* #### 六、配置优化建议 ```vim " ~/.vimrc 高效配置示例 set number " 显示行号 set incsearch " 实时搜索高亮 set smartcase " 智能大小写搜索 nnoremap ; : " 用 ; 替代 : 加速命令输入 inoremap jk <ESC> " 用 jk 替代 ESC ``` > 提示:Vim 是 vi 的升级版,支持语法高亮、跨平台操作等高级特性 [^3]。建议通过 `vimtutor` 命令进行交互式学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值