0%

vim使用笔记

  1. 水平创建一个terminal:

    vert term

  2. term

  3. ctrl + w + N
    打开的terminal进入vim的normal模式,可以使用vim的复制命令复制信息到原来的窗口里。
    注意这里是大写的N。按vim中进入编辑的键(比如i)就可以离开terminal normal模式,
    重新进入terminal里。

  4. 在插入模式的时候,当前的一个单词输入错了,可以用ctrl + w删去当前的单词,
    ctrl + u删除到首行。注意这个在shell里也是可以使用的。

    这个可以在输入的时候不用退出插入模式来删除单词,当然是针对英文的。

  5. 切换到普通模式可以用ctrl + [, 用手指整体移开去按esc。

  6. 普通模式下,z + enter把当前行拉到最顶行。

  7. 普通模式下,按R进入替换模式,这时直接输入,输入的字符直接覆盖之前的内容。
    这个功能和word下的替换是一样的。gR是虚拟替换模式,按实际的占位替换。

  8. 注意多用.命令,这个命令重复之前得到操作。我们要先定义一个操作的意思。
    普通模式下,一个操作就是一个操作。进入和esc之间的整个插入模式算一个操作。

  9. 录制宏: q[a-z] 开始录制宏,q 停止录制宏,@[a-z] 使用宏。

  10. daw 普通模式下删除当前的单词,delete a word

  11. cw 普通模式下,删除当前位置到单词结尾,change word
    caw 在光标处于一个单词中间的时候,可以删除这个单词。a是around的意思。

  12. f + char,跳到本行第一个字符; t + char, 光标移动到char的前一个字符

  13. 全局替换:%s/xxx/yyy/g
    s代表替换,%表示1,$,是全局的意思。

  14. 转换成大写: 可视状态选要转换的部分,gU

  15. 快速移动光标可以使用叫easymotion的vim插件。

    在~/.vim/bundle下git clone https://github.com/easymotion/vim-easymotion.git
    在再~/.vim/bundle下git clone https://github.com/VundleVim/Vundle.vim.git
    后者是一个vim插件的管理器,可以用来安装easymotion。之后,按照Vundle.vim里
    README.md的提示, 把“3. Configure Plugins”的一段配置copy到.vimrc里,把其中
    的Plugin xxx都删了,改成Plugin ‘easymotion/vim-easymotion’。打开vim run:
    PluginInstall, 会有easymotion安装提示出来,并显示已经装好了。打开vim run:
    help easymotion.txt, 可以看到easymotion的help文档。

    具体使用的时候在.vimrc里加入一行快捷键的映射,可以是:
    nmap ss <Plug>(easymotion-s2) 这样的效果是当你按ss的后会进入easymotion的
    搜索输入,这个时候输入想要调到的地方的两个连续字符,之后整个屏幕凡是有这
    两个连续字符的地方都会高亮,并且出现一个标记的字符,直接按这个字符就可以把
    光标跳到对应的位置。

    太太强大了!

  16. 使用vim画ASCII图

    Linux kernel中的文档也有很多包含ASCII图。介绍两个在vim下画ASCII图的工具。
    使用工具画图, 效率更高。

    1. boxe

      可以插入一些这个软件中自带的图形,效果如下:
      输入命令:echo “example” | boxes -d dog

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
                __   _,--="=--,_   __
      / \." .-. "./ \
      / ,/ _ : : _ \/` \
      \ `| /o\ :_: /o\ |\__/
      `-'| :="~` _ `~"=: |
      \` (_) `/
      .-"-. \ | / .-"-.
      .---{ }--| /,.-'-.,\ |--{ }---.
      ) (_)_)_) \_/`~-===-~`\_/ (_(_(_) (
      ( example )
      ) (
      '---------------------------------------'

      在ubuntu下直接 sudo apt-get install boxes 安装即可。
      可以在/etc/boxes/boxes-config中查看其支持的图形。

    2. vim插件drawIt

      若手工去画ASCCI图,需要不断的调整。这个插件的功能简单的说,即他能使我们先把
      字符摆好,然后运用该插件加上线条:

      step 1: 输入表格中的字符

      AAAA BBBB BBBB CCCC

      AAAA BBBB BBBB CCCC

      AAAA BBBB BBBB CCCC

      step 2: 打开drawIt功能加上表格的框框

      1
      2
      3
      4
      5
      6
      7
      +--------+--------+---------+--------+
      | AAAA | BBBB | BBBB | CCCC |
      +--------+--------+---------+--------+
      | AAAA | BBBB | BBBB | CCCC |
      +--------+--------+---------+--------+
      | AAAA | BBBB | BBBB | CCCC |
      +--------+--------+---------+--------+

      具体的安装和使用方法见:
      http://blog.chinaunix.net/uid-23105261-id-109508.html

  17. set cc=80 //第80列是一道红色的线,一般代码在红线以内(只占79列)
    统一缩进:shift + > or shift + < 

  18. ts *** 查看定义, 在行末模式下输入:ts 待查类型/函数, 将得到他的定义

  1. XX, XXs/a/b/g 第XX行到第XX行中所有的a换成b。
    **,**s/a/b/gc 可以选择要改变的“a”, 如果有些“a”不想变成“b”, 这个选项还是比较有用的

    加注释的方式可以是:s/^////g  或 s/^/#/g

    当然加注释的方法还可以,control+v, 向下选中要加的行,I 表示插入,光标会跳回
    第一行,然后输入//作为注释最后按exit键,这时会发现之前选中的行之前都加上了//注释

  2. 代码补全 ctrl+p  

  3. 多个tags文件在.vimrc中用逗号隔开即可, 搜索的时候可以在多个tags中:
    set tags=/path_1/tags,/path_2/tags

    set tags=tags;  注意要加“;”,这个配置可以逐级向上查找tag文件,找见后就set tag。
    这个对于有多个代码库的情况比较方便,不用在.vimrc里把tag的路径写死,只要把tag
    文件放在代码的根目录下,不管在哪里打开, 总可以找到tag,并且set tag

  4. 跳到函数的开始、结尾:
      [[, ]], [], ][
      1. 两个符号相同,则跳到函数的开头。[[跳到前一个的开头,]]跳到后一个的开头
      2. 两个符号不同,则跳到函数的结尾。[]跳到前一个的结尾,][跳到后一个的结尾

  5. ctrl+d ctrl+u: 上下翻半页。ctrl+e ctrl+y: 光标不动,上下滚屏

  6. ctrl+v块选择, shift+v行选择

  7. set tabstop=8, tab按键一次缩进8个字符的宽度
      set softtabtop, linux下最好不要设置,若softtabtop=4, 第一次输入4个空格,第二次
      按输入4个空格,然后把8个空格转变成一个tab. kernel中的缩进是8个字符哦!

  8. 映射F4,F2,F3按键到对应的插件程序,第一个列出文件中所有的变量名、函数名和宏
      第二个列出目录结构,第三个查找光标所在处的字符串,可以改变该字符串的查找路径!

    1
    2
    3
    noremap <F4> :TlistToggle<CR>
    noremap <F2> :NERDTreeToggle<CR>
    nnoremap <silent> <F3> :Grep<CR>
  9. set spell可以为你检查文件中有没有拼错的词,但貌似只支持英文. 

  10. jump between two files or two functions
      向前跳到前几次光标的位置:ctrl + i
      向后跳到后几次光标的位置:ctrl + o 这样可以在函数定义和调用处来回跳动

  11. 尽量在vim内完成所有操作,包括:make, vimgrep(缩写成vim)
    vimgrep的格式是:vim /search_patten/ **/*.[ch] **是当前目录以及以下目录的通配符,
    *是当前目录的通配符。vimgrep搜索得到的各个条目会保存到一个叫quickfix的表里,
    这个是vim的一个基本的功能,copen可以开一个窗口,然后在新开窗口中打开quickfix表,
    cclose关闭打开的quickfix表。

  12. tj命名,tags jump 符号,可以搜索一个符号的位置,并且跳过去。stj split一个新
    的窗口显示。有很多t开头的命令,最常用的要数ts了,tags select。

  13. ab命令,用一个缩写来代替一组字符。