使用vim

1. 查找命令帮助文档: :help command


2. 环境变量

set all : 显示所有环境变量
set nu : 显示行号
set nonu : 不显示行号
noh : 取消高亮
set paste : 进入粘贴模式
set nopaste: 退出粘贴模式
f: 查看vim当前编辑文件所在目录


3. 字符串操作

复制:yy, dd(剪切): 复制(删除)光标所在的行;y5y:复制(删除)除光标所在行,向下五行;
粘贴:p:粘贴到光标所在行的下一行. P:粘贴到光标所在行的前一行;
高级复制粘贴:首先按esc退出编辑模式进入命令模式,然后输入v,进入可视模式,然后用方向键选择要复制或删除的区域(y,d);
查找: /xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串,其中xxx可以是正规表达式,关于正规式就不多说了. / 表示向下查找; ? 表示向上查找;再输入 n 查找下一个匹配处, 输入 N 反方向查找.
替换: %s/string1/string2
统计次数:%s/test/&/gn
撤销:u;
反撤销:Ctrl + r;
批量TAB: gg, =, G。全文格式化。


4. 放弃修改

放弃一修改过的文件,重新编辑。
(1)使用命令 :q!强行退出后再vi flname重新进入。
(2)使用命令 :e!强行重编辑更便捷。这样也是会打开文件,但会放弃目前编辑文件的改变,否则如果文件已有变动,vim 预设是不让您随便离开的。:e! 后不接什么的话,代表舍弃一切修改,重新载入编辑中文件


5. 移动光标

- %是从大括号的开始移动到大括号的结束位置  
- :后边加行号就是跳到这一行  
- ctrl+d 向下翻页 d(down)  
- ctrl+u 向上翻页 u(p)  
- 以词为单位的移动  
- w 下一個word w(ord)  
- W 下一個word(跳过标点)  
- b 前一個word b(ackward)  
- B 前一个word(跳过标点)  
- e 跳到当前word的尾端 e(nd)  

6. 分屏

水平分屏 (sp filename):vim -on file1 file2 ...其中:
其中: o(是小写字母o,不是数字零)n(表示你要分屏的文件个数) filen(文件名多个文件用空格分开)
垂直分屏 (vsp filename):vim -On file1 file2 .....
其中: O(是大写字母O,不是数字零)n(表示你要分屏的文件个数),filen(文件名多个文件用空格分开)
切换屏幕:Ctrl + w + w


7. 进阶操作

限于篇幅,在这里我仅介绍下我非常常用的几个操作 。

  • 重复操作
    因为VIM所有的操作都是原子化的,所以把这些操作程序化就非常简单了:
    • 5w 相当于按五次 w 键;
    • 6j 下移6行,相当于按六次j;
    • 3J 大写J,本来是将下一行与当前行合并,加上数量,就是重复操作3次;
    • 6dw 和 d6w 结果是一样,就是删除6个word; - 剩下的无数情况,自己类推吧。
  • 高效编辑
    • di" 光标在”“之间,则删除”“之间的内容
    • yi( 光标在()之间,则复制()之间的内容
    • vi[ 光标在
    • 以上三种可以自由组合搭配,效率奇高,i(nner)
    • dtx 删除字符直到遇见光标之后的第一个 x 字符
    • ytx 复制字符直到遇见光标之后的第一个 x 字符
  • 标记和宏(macro)
    • ma 将当前位置标记为a,26个字母均可做标记, mb 、 mc 等等;
    • 'a 跳转到a标记的位置; - 这是一组很好的文档内标记方法,在文档中跳跃编辑时很有用;
    • qa 将之后的所有键盘操作录制下来,直到再次在命令模式按下 q ,并存储在 a中;
    • @a 执行刚刚记录在 a 里面的键盘操作;
    • @@ 执行上一次的macro操作;
    • 宏操作是VIM最为神奇的操作之一,需要慢慢体会其强大之处;

8. github上面的vimrc的使用

- *安装*:git clone https://github.com/tryangel/vimrc_d.git  /home/.vimrc_d  

sh /home/.vimrc_d/install_vimrc_all.sh
- leader键是,
- 注释/反注释代码nerdcommenter:leader+c+space,leader+c+m/s
- 关键字补全 neocomplete: ctrl + p
- 为当前目录下以及子目录的文件生成ctags关键字:ctags -R
- cscope.out : cscope -Rb *
- C源文件函数跳转:ctrl +] 和 ctrl +T
- 打开nerdtree : leader+nn
- 打开taglist : F8
- CtrlP : leader+j
- CtrlBuffer : Ctrl+b
- bufexplore : leader+o
- 生成linux源码的tags和cscopes.out索引文件:make tags;make cscopes
cscopes 快捷键Ctrl+c
Ctrl+c+s直接跳到本函数的定义的位置,比Ctrl+]匹配到的多一些
cs find c|d|e|f|g|i|s|t name

    命令 | 说明
    --- | ---
    0 或 s | 查找本 C 符号(可以跳过注释)
    1 或 g | 查找本定义
    2 或 d | 查找本函数调用的函数
    3 或 c | 查找调用本函数的函数
    4 或 t | 查找本字符串
    6 或 e | 查找本 egrep 模式
    7 或 f | 查找本文件
    8 或 i | 查找包含本文件的文件

9. 相关参考文档

我的vim配置文件:https://github.com/tryangel/vimrc_d/blob/master/vimrcs/basic.vim
VIM使用:http://blog.csdn.net/sin90lzc/article/details/9079015
VIM浏览源码:http://my.oschina.net/u/554995/blog/59927

posted on 2016-11-12 21:24  tryangel  阅读(142)  评论(0)    收藏  举报

导航