距離前兩次寫完日誌又有一段時間了,用的越來越多,慢慢又發現了幾個小功能
前兩次的日誌,大家喜歡VIM的可以看下,
VI 編程1 http://www.cnblogs.com/amaoxiaozhu/archive/2012/03/23/2414007.html
VI 編程2 http://www.cnblogs.com/amaoxiaozhu/archive/2012/04/05/2423009.html
好了不多說,開始新的旅程:
1. 編輯篇:
H M L 螢幕的頂、中、底部 [不用再費心去想是8j 還是12j 了,一鍵搞定~]
gf 編輯游標處的檔案名稱 [最推薦這個了~ 很強大的功能!]
'. 上次修改位置
ctrl + o | i 游標位置回溯
ls |vi - 編輯管道輸出
2. 模組篇:
前提是安裝了NERDTree~
使用某個模組:vi -c NERDTree
直接開啟檔案夾可以使用 vi . 或 vi 檔案夾路徑
3. 進位篇
:%!xxd 將當前的文本轉換為16進位。大端法
:%!od 將當前的文本轉換為8進位。
:%!xxd -r將當前的文本轉換迴文本格式。
:%!hexdump將當前的文本轉換回16進位,小端法顯示。
註:小端法可以理解的記憶體顯示模式(不準確)。大端法可以理解為實際模式。
4. 其他命令篇
%表示檔案的所有行,!xxd表示外部命令,結合在一起,就是當把當前vim上顯示的所有的行傳遞給xxd,xxd處理後的結果重新顯示在vim上。
整理檔案:gg=G
G 跳到檔案末尾
vim 編輯加密檔案vi -x file 會指定加密密碼
g; 上次修改位置
ctrl-c 或[ : 直接退出編輯模式 [神一般的快速鍵啊]
@: 重複上次的執行命令
"2p: 拷貝從第二次到剛才複製過的內容
5. 尋找篇
f 同一行內尋找字元 f( 尋找(
; 重複上次尋找 c;修改到下一個尋找的字元
df 刪除同一行內到某個字元的內容
:g/waf 顯示所有的包含waf行的內容
:g/waf/# 同時顯示行號
/<ctrl - r><ctrl -f> 尋找游標處的單詞
/keyword/1 游標定位在尋找單詞的下一行
/keyword/e+1 游標定位在尋找單詞的結束位置右側+1
/keyword/s-1 游標定位在尋找單詞的開始位置左側 -1
/<ctrl -r > / else 上次搜尋單詞+else
3ft 尋找行內的第三個't'
6. python代碼的tags產生
在tools/scripts 路徑下,有python專門為VI提供的tags產生器 ptags.py
在我的環境中我按照這個方式配置了tags:
1. 在自己的開發目錄下產生python庫的
python ptags.py $(find . /usr/lib/python2.5/ -name '*.py'|grep -v 'git')
【很少會查到git的庫,leave it】
2. 編輯.vimrc
set tags=tags; set autochdir
首先使用目前的目錄擷取tags【後續開發,可以在新目錄中產生子tags】
否則就繼續向上搜尋
附: 如果你也是一個python coder ~ 握個爪
set autoindentset syntax=onset nocpset softtabstop=4filetype plugin oncolorscheme IDLElet g:pydiction_location='/root/conf/vi/complete-dict'let Tlist_Show_One_File=1let Tlist_Exit_OnlyWindow=1let Tlist_Use_Right_Window = 1set tags=tags; set autochdirmap <silent> <F5> mz?(*)<CR>yyggpA;<ESC>'z " 建立函數原型imap <silent> <F5> <ESC>mz?(*)<CR>yyggpA;<ESC>'zAmap <F6> :call Test()<CR> " 調試imap <F6> <ESC>:call Test()<CR>map <silent> <F7> :Grep<CR><CR><CR> " 全域搜尋imap <silent> <F7> <ESC>:Grep<CR><CR><CR>map <F8> i#<ESC>j0 " 注釋imap <F8> <ESC>i#<ESC>j0map <F9> 0Ji<CR><ESC> "對齊 平級imap <F9> <ESC>0Ji<CR><ESC>map <F10> 0Ji<CR> <ESC> "對齊 增加縮排imap <F10> <ESC>0Ji<CR> <ESC>map <F11> 0Ji<CR><ESC>XXXX<ESC> "對齊 減少縮排imap <F11> <ESC>0Ji<CR><ESC>XXXX<ESC>function Python_Test() let mp = &makeprg let ef = &errorformat let exeFile = expand("%:t") setlocal makeprg=python\ -u set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m silent make % copen let &makeprg = mp let &errorformat = efendfunctionfunction C_Test() let cmd = "!gcc " let option = "-O2 " if search("math\.h") != 0 let option .= " -lm " endif exec cmd. " % " .option endif exec "!./a.out" copenendfunctionfunction Test() exec "w" if &filetype == "c" exec "call C_Test()" elseif &filetype == "python" exec "call Python_Test()" endifendfunction
Enjoy VI Enjoy Code!