vim 技巧

来源:互联网 发布:打鸡血网络语言 编辑:程序博客网 时间:2024/05/05 11:14
  • 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输入)
原创粉丝点击