- 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输入)