用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 } linux

         命令: 若是想編輯第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

五. 其它

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

vimrc配置
4.1 顯示行數 set number
4.2 設置space set tabstop=4
4.3 設置智能空格 set smartindent

參考資料

[2] vim-gist插件  https://github.com/mattn/gist-vim
相關文章
相關標籤/搜索