用vim做程序编辑器的一点总结

     用意: 网络上常见的vim教程都是针对文本编辑器本身的功能来展开的, 我希望单纯从高效编辑源代码方面写些自己的总结.  前提是懂一些基本的命令, 参考文献1是个不错的入门教材.

总结主要分为模版生成, 快速定位, 插入删除以及Gist在线代码库四个部分.

一. 模版生成

       1.1  模版库: 以C++最常用的模版为例, 末班放在~/templates/template.cpp
#include<iostream>
using namespace std;

int main() {
    return 0;
}
     1.2  命令: cp ~/templates/template.cpp *.cpp; vim *.cpp来开始编辑文件
     1.3  alias: 在linux下也可以在~/.bashrc文件下加入alias ct='cp  ~/templates/template.cpp'; 然后使用ct *template.cpp来编辑.

二. 快速定位

    做一个双手会跳舞的程序员, 在程序中四处快速地穿梭.
    2.1 显示坐标系: 显示行标
         笛卡尔最大的贡献就是建立了坐标系, 从而统一了古典数学中的几何和代数. 通过显示行号和列号来构建穿梭的
    坐标系. 在normal mode下使用set number来显示行标, 当然也可以讲set number加入~/.vimrc文件中. 如下所示

1 #include <iostream>
2 using namespace std; 
3 和谐社会
4 double main1()2 { 
5 return 0~
6 }

         命令: 如果想编辑第n行, 输入ngg或者nG即可. 例如输入3gg或者3G就可以了. 定位了行数以后如果想在这一行进行编辑怎么做呢?
    2.2 在行内穿梭: 行内定位
         2.2.1 精准定位 [修改上面的代码]
               在第三行加注释: 0 + i + "//", 后面有代码块注释的方法. 0表示回到行的第一个字符, 不包括smartindent
               修改main的返回类型: ^ + cw + i + "int"; ^表示回到本行的第一个非空白字符, cw表示from the cursor to the word. 删除从光标到单词结尾. 当然长按x也可以.
               将"~"改为";": $ + x + ";"即可删除.  $表示每行的最后一个非空字符
              在return 0后面增加注释: g_ + i + "//"即可   g_表示每行的最后一个字符
               修改main1为main: 可以使用/1或者4gg+f)或者使用4gg+w+e的组合键. w表示下一个单词, e表示单词结尾.
               修改()2为(): 可以使用/2或者4gg+f2或者使用4gg+w+E的组合键. 小写字母w和e仅包括字母和_下划线. 大写W和E包含所有可打印的ASCII码. 
               注:  0, ^, g_, $ 分别表示行开始, 行非空开始, 行非空结尾, 行结尾.  见下图

               跳跃main{}语句: 4gg+$+%即可. 利用%的括号匹配
         2.2.2 其它定位
               如果从尾部开始找的话就只能使用F和T来找了. 如果出现特别长的句子, 例如SQL语句时, 使用/ ? F/T/f/t这些搜索语句比较靠谱. 当然使用Nhjkl也可以

三. 插入删除

    3.1 删除某个变量名 cw和Nx
    3.2 初始化数组 a = {1,1,1,1,1,,.....1};  使用"."来做, 先插入1, 再按"99."即可
    3.3 插入cout调试语句, 使用o或者O在光标所在行的前面或者后面插入语句.
    3.4 撤销和恢复最喜欢了. u(undo)和crtl-r(redo)可以完成任务. 
    3.5 保存文本: 使用wq保存, q!不保存强制退出, 使用e *.file打开文本, 使用saveas另存为; 使用bn和bp打开最近打开的文本.n表示buffer中的next文件, p表示buffer中的previous文件.
    3.6 集体注释整个main函数: crtl-v进入试图模式, 使用4gg+crtl-d或者3j或者$+%选择行], 然后使用I// + [ESQ]即可.
    3.7 删除main函数或者函数body中所有的参数列表: 以删除mainbody为例, 5gg+vi}即可. 可以使用[d | y | v] [i | a]来进行复杂操作.
    3.8  神奇自动补全: crtl-p
    3.9 多窗口复制粘贴 sp *.cpp加上crtl-w + 向上/向下箭头 来回复制粘贴.
    3.10 复制函数名, 例如main; 直接使用光标在m前提下yfn即可.
     注: 使用help 和help usr_01.txt寻找更多功能. 

四. Gist在线代码库

随时随地调出上传自己的代码库出来, 利用gist吧.
首先使用vundle安装插件
Bundle 'mattn/webapi-vim'
Bundle 'mattn/gist-vim'有用的命令
发送public gist ~ Gist -P
获得某个gist ~ Gist 7577124
获得个人的gist列表 ~ Gist -l
获得个人的start list ~ Gist -ls
获得所有人的gist列表 ~ Gist -la
获得某个用户的gist列表 ~ Gist -l "xiaoqiangkx"

参考: https://github.com/mattn/gist-vim
用vim做程序编辑器的一点总结_第1张图片

五. 其它

运行外部命令 !g++ test.cpp; ./a.out 神器啊, 不用wq又vim了.

vimrc配置
4.1 显示行数 set number
4.2 设置space set tabstop=4
4.3 设置智能空格 set smartindent

参考资料

[1] learning vim progressively  http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/
[2] vim-gist插件  https://github.com/mattn/gist-vim

你可能感兴趣的:(用vim做程序编辑器的一点总结)