用意: 網絡上常見的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
參考資料