vim操作备忘录

vim
备忘录

vim的书籍虽然看不不少,可是老是容易忘记,主要是自己操作总结过少,这个博客就主要用来记录一些比较常见的术语和操作,以防止自己再次忘记。

<leader>的含义

  • <leader> 在vim中默认表示" \ "
  • :let mapleader = “-” 可以通过以下命令修改成自己喜欢的键。

<c-p>

  • 以<c-…开头的表示:ctrl + …按键一起按,例如<c-p> 就是ctrl + p 一起键入。

不加载任何vim插件,使用最原始的vim

vim -u NONE -N XXXX.CC

-u NONE 表示不加载.vimrc

-N vim nocompatible vi

windows下的插件均安装在xxxx\xxxx\vim80(版本号)\colors(以颜色主题为例)下

ubuntu下均在~/.vim/colors(以颜色为例),颜色主题启动均以colorscheme monokai 来启动。

ubuntu通过vundle进行管理,主体步骤.vimrc---->通过命令if filereadable(expand(xxx))找到vundle的配置文件,并source启动-------->.vim.bundles------------>set rtp+=xxxx\Vundle.vim 以及call vundle#begin(默认 .vim\bundle)寻找到各类插件

source xxx.vim 用于启动xxx.vim插件

vim中常用配置

  • 退格

  • shiftwidth reindent 操作(<<和>>)时缩进的列数(这里的一列相当于一个空格)

  • tabstop 一个tab键所占的列数,linux 内核代码建议每个tab占用8列

  • softtabstop 敲入tab键时实际占有的列数。

  • expandtab 输入tab时自动将其转化为空格

  • 一般用法 :set shfitwidth = 4 softtabstop = 4 expandtab 换行自动缩进4格,softtabstop表示键入tab按钮实际所占行数,本例所占4列,expandtab使得tab实际不满足所定义列数,则以空格来凑。

  • filetype 根据文件后缀名来确定文件所属类型,可以通过set filetype=cpp来强制制定文件所属类型。

    :filetype on 打开 未改变 未改变

    :filetype off 关闭 未改变 未改变

    :filetype plugin on 打开 打开 未改变

    :filetype plugin off 未改变 关闭 未改变

    :filetype indent on 打开 未改变 打开

    :filetype indent off 未改变 未改变 关闭

    :filetype plugin indent on 打开 打开 打开

    :filetype plugin indent off 未改变 关闭 关闭

    要查看当前的状态,只需输入: >

    :filetype

  • 查看不可见字符

    :set invlist

    :set nolist

  • windows 下的vim设置字体

    c:\Program Files(x86)\Vim下的_vimrc 添加 set guifont=Consolas:h11

    配置文件_vimrc与安装的插件文件夹colors不在一个文件中,其他均在Vim\vim80\ 之下

映射

  • inoremap就只在插入(insert)模式下生效
  • vnoremap只在visual模式下生效
  • nnoremap就在normal模式下(狂按esc后的模式)生效
  • 在vim打开文件norm6al模式下键入 :help nnoremap,得出以下提示
  • :nn[oremap] {lhs} {rhs} |mapmode-n| :nn *:nnorem
  • 在映射命令作用的模式中把键序列 {lhs} 映射为 {rhs}
  • 以YouCompleteMe的映射跳转定义的使用用例如下:
  1. nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳转到定义处 

高效修改符号内的字符

ci’、ci"、ci(、ci[、ci{、ci< - 分别更改这些配对标点符号中的文本内容

di’、di"、di(或dib、di[、di{或diB、di< - 分别删除这些配对标点符号中的文本内容

yi’、yi"、yi(、yi[、yi{、yi< - 分别复制这些配对标点符号中的文本内容

vi’、vi"、vi(、vi[、vi{、vi< - 分别选中这些配对标点符号中的文本内容

it : 选择xml标签内部内容,例如,高亮tags

at:选择一对xml标签,例如,高亮所有内容

将工作区分割成窗口

  • 分割窗口操作
命令 用途
<C-w>s 水平切分当前窗口,新窗口仍显示当前缓冲区
<C-w>v 垂直切分当前窗口,新窗口仍显示当前缓冲器
:sp[lit] {file} 水平切分当前窗口,新窗口中载入{file}
:vsp[lit] {file} 垂直切分当前窗口,新窗口中载入{file}
  • 在窗口间切换
命令 用途
<C-w>w 在窗口间切换
<C-w>h 切换到左边的窗口
<C-w>j 切换到下面的窗口
<C-w>k 切换到上面的窗口
<C-w>l 切换到右边的窗口
  • 关闭窗口
Ex命令 普通模式命令 用途
:clo[se] <C-w>c 关闭活动窗口|
:on[ly] <C-w>o 只保留活动窗口
  • 改变窗口大小
命令 用途
<C-w>= 使所有窗口等高等宽(常用于恢复)
<C-w> - 减少窗口中的一行
<C-w> + 增加窗口中的一行
<C-w>_ 最大化窗口中的行(高度)
<C-w>| 最大化窗口的列
[N]<C-w>_ 窗口中的行(高度)设置为N
[N]<C-w>| 最大化窗口的列设置为N

在标签中切换

浏览Quickfix列表

 命令  用途
:cnext 跳转到下一项
:cprev 跳转到上一项
:cfirst 跳转到第一项
:clast 跳转到最后一项
:cc N 跳转到第N项
:copen 打开quickfix窗口
:cclose 关闭quickfix窗口
:cnfile 下一个文件的第一项
:cpfile 上一个文件的最后一项

ctrl+i:进入定义或声明之处

ctrl+o:跳出定义或声明之处

YCM中采用vim的jumplist

单词,字符串之间跳跃

b:反向跳跃到单词首字符

B:反向跳跃到字符串首字符

w:正向跳跃到单词首字符

W:正向跳跃到字符串首字符

e:正向跳跃到字符末尾字符

E:正向跳跃到字符串末尾字符

ge:跳跃到上一个字符末尾

gE:跳跃到上一个字符串末尾

显示

zt:当前行显示到顶部

zz:当前行显示到屏幕中间

3H:跳到顶部第三行

5L:调到底部第五行

面向字符,行,列操作

  • v:面向字符,配合b,w,e,ge可以快速选择并且匹配
  • caw,yaw,daw:面向单词级别的处理
  • V:面向行处理,Vr|,将一行全部转换成|
  • ctrl+v:面向列处理,c-v3j,连续选择下面三列同位置,包含最初一行
    • shift+i 在所选高亮区域前插入,shift+a 在所选高亮区域后以为插入
  • gv:重复选择上次的高亮区域
  • gU{motion},motion比如:it,V等,大写所选内容,gUgU大写所在行
  • gu{motion},motion比如:it,V等,小写所选内容,gugu小写所在行
  • i:当前光标前插入,I行首插入
  • a:当前光标后插入,A行末插入
  • o:切换高亮选区的活动端

vim比较文件方法

  1. #最简单的方法 

  2. vimdiff FILE_LEFT FILE_RIGHT #方法1 

  3. vim -d FILE_LEFT FILE_RIGHT #方法2 


  4. vim FILE_LEFT 

  5. :vertical diffsplit FILE_RIGHT #方法3 


  6. [c #反向跳转 

  7. ]c #正向跳转 下一个不同点 

  8. :set noscrollbind #不需要同步移动 

  9. :diffupdate 更新之后,需要手动同步 

  10. #如果已经用split方式打开了两个文件file1,file2,又想比较两文件的不同。分别在两个窗口里面输入命令: 

  11. :diffthis 


  12. 合并文档: 

  13. dp 将差异点的当前文档内容应用到另一文档(diff put) 

  14. do 将差异点的另一文档的内容拷贝到当前文档(diff get) 

  15. 上下文的展开和查看 

  16. 比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数为3行,可以这样设置: 

  17. :set diffopt=context:3 

  18. 可以用简单的折叠命令来临时展开被折叠的相同的文本行: 

  19. zo (folding open, z这个字母看上去比较像折叠的纸) 

  20. 然后可以用下列命令来重新折叠: 

  21. zc (folding close) 


常见需要掌握的vim操作

  • 不按Esc而是按[或者c,速度快很多
  • 学会几个定位键的区别:0, $, {, }, g, G, w, e, b…
  • o, O分别是当前位置下面/上面插入一个新行并进入插入状态
  • Shift+V选定几行,然后用 一起移动
  • Ctrl+V选定行首或行尾的字符,然后用shift+i做插入,或者shift+x做删除
  • 学会用y,d 和p, P做粘贴剪切
  • 学会用^W的窗口操作。打开文件用sp或者vs
  • 学会记录宏的命令。用q加任意键开始录制,再按q保存。然后可用@加这个任意键回放,在@前加数字可定义回放次数。
  • "."重复上一个命令,“u"取消上一个命令,”^r"反取消
  • ^n, ^p用buf里的关键词补全。
  • 学会搜索替换":%s/要搜的东西/要换成的东西/g"
  • 任何时候移到一个单词上按#的话可以高亮这个文档里所有一样的单词
  • 用“/”做搜索, 按n或N 上一个/下一个
  • ":!命令 &“可直接运行这个命令,用”:!命令 %&"如果你想让这个命令对当前所编辑文件做操作。
  • 任何时候可用":cd %:p:h"来切换目录到当前编辑文件所在目录。

vimscript中不错的语句小结

  1. "打开或读取python相关的程序,才高亮所有python语法 

  2. autocmd BufRead,BufNewFile *.py let python_highlight_all = 1 


  3. au FileType python setlocal formatprg=autopep8\ - 

  4. autocmd FileType c,cpp,java,go,php,javascript,puppet,python,rust,twig,xml,yml,perl autocmd BufWritePre <buffer> :call <SID>StripTrailingWhitespaces() 

  5. autocmd ! 清除vimcrc组全部的自动命令 


  6. #快捷键函数映射 

  7. map <F3> :call FormatSrc()<CR><CR> 

  8. func FormatSrc() 

  9. exec "w"   "保存文档 

  10. if &filetype == 'py' || &filetype == 'python' 

  11. exec "r !autopep8 -i --aggressive --aggressive %" ”读取该命令执行后的结果 

  12. endif 

  13. exec "e! %"   “编辑当前文件:无论缓存区里是否已经更改,考虑多人编辑文档的情况 

  14. endfunc 


  15. noremap <F3> :Autoformat<CR>   "f3映射到命令autoformat 

  16. au BufWrite * :Autoformat "保存文档前执行autoformat 


  17. "使得formatprg带有参数 

  18. au FileType python let &l:formatprg='autopep8 -a -a -' 

  19. "au FileType python setlocal formatprg=autopep8\ - 


vim操作备忘录的更多相关文章

  1. linux下vi或vim操作Found a swap file by the name的原因及解决方法

    在linux下用vi或vim打开Test.java文件时 [root@localhost tmp]# vi Test.java出现了如下信息: E325: ATTENTION    Found a s ...

  2. [No0000191]7种提高工作效率的Vim操作-Vim使用技巧(6)

    Vim一直被认为是一种非常高效的文本编辑器,但是对于普通用户来说,很难在入门的时候就体会到Vim的所谓高效性. 本文介绍7种提高你工作效率和生产力的Vim使用技巧,主要集中在对某个文件范围内的特定目标 ...

  3. VIM操作基础命令

    VIM操作基础命令 1 文件操作 1.1 打开文件 VIM 使用 –o 或 –O 选项打开多个文件,其中 –o 表示垂直并排,例如 vim -o lesson4 lesson5 lesson6.大O表 ...

  4. vim学习笔记(1)——vim操作

    仅记录一些自己最经常使用的vim操作.随时更新 文本操作 d 剪切.双击剪切一行 y 复制,双击复制一行 p 粘贴 x 删除当前光标下字符 r 替换当前光标字符.后面接替换的字符 :s/old/new ...

  5. VIM操作常用指令(转)

    vim是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是"visual interface&q ...

  6. Ubuntu/Linux 下pdf阅读器Zathura(类vim操作)

    Ubuntu下源安装: sudo apt-get install zathura 操作总结: 基本操作与vim一致,对于熟悉vim快捷键的十分方便: 向下移动一页是J(Ctrl+f),向上移动一页是K ...

  7. vim操作集合

    Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...

  8. vim操作笔记

    1.切换到下一个文件 假设要切换的文件名为 test.py :ex test.py 2.文档内复制命令 yy "复制光标所在行.或大写一个Y. 2yy "复制两行. y^ &quo ...

  9. vim 操作

    vim -b test.bin vim 的 -b 选项是告诉 vim 打开的是一个二进制文件,不指定的话,会在后面加上 0x0a ,即一个换行符,这样若是二进制文件,则文件被改变了,后面多了一个0x0 ...

随机推荐

  1. Mybatis延迟加载和查询缓存

    摘录自:http://www.linuxidc.com/Linux/2016-07/133593.htm 阅读目录 一.延迟加载 二.查询缓存 一.延迟加载 resultMap可以实现高级映射(使用a ...

  2. Java中实例方法、类方法和构造方法

    类方法,有static修饰符,典型的主函数public static void main(String[] args){}实例方法,就是一般的方法构造方法,没有返回值(就是连void都没有),方法名与 ...

  3. 自己用的一套reset.css,打算整理一下方便以后用,持续更新中,各位大神,不喜勿喷

    *{margin: 0; padding: 0;border:none;}img{vertical-align: top;width: 100%;border: none;}ul,li{list-st ...

  4. jdbc参数

    JDBC连接池参数:    jdbc.initialSize=0       //初始化连接    jdbc.maxActive=30     //连接池的最大数据库连接数,设为0表示无限制    j ...

  5. 根据URL下载图片至客户端、服务器实例

    1.保存至服务器 根据路径保存至项目所在服务器上. String imgUrl="";//图片地址 try { // 构造URL URL url = new URL(imgUrl) ...

  6. js promise看这篇就够了

    一.背景 大家都知道nodejs很快,为什么会这么快呢,原因就是node采用异步回调的方式来处理需要等待的事件,使得代码会继续往下执行不用在某个地方等待着.但是也有一个不好的地方,当我们有很多回调的时 ...

  7. jspf与jsp的区别

    如果想把一个jspf的文件引入(incurred)到一个jsp页面中,只能使用"@include"指令引入 如果使用<jsp:include>引入,jspf文件中的内容 ...

  8. TP手册学习第二天

    默认情况下,URL是不区分大小写的,访问规则:--模块/控制器/操作/参数/值,如果要访问驼峰法的控制器类BlogTest,则需要使用:blog_test MVC是一个设计模式,它强制性的使应用程序的 ...

  9. Core Animation 文档翻译 (第五篇)

      构建Layer层次结构 在APP中大多数情况下,将Layer和View对象结合使用是Layer最好的使用方式.然而,很多时候我们可能需要通过添加单独的Layer对象,以便增加视图继承层次:当为了提 ...

  10. BZOJ 3993: [SDOI2015]星际战争 [二分答案 二分图]

    3993: [SDOI2015]星际战争 题意:略 R1D2T1考了裸二分答案+二分图最大匹配... #include <iostream> #include <cstdio> ...