vim:
vim 從 vim7 開始加入了多標籤切換的功能, 相當於多窗口. 之前的版本雖然也有多文件編輯功能, 但是總之不如這個方便啦。用法:
:tabnew [++opt選項] 〔+cmd〕 文件 建立對指定文件新的tab
:tabc 關閉當前的tab
:tabo 關閉所有其他的tab
:tabs 查看所有打開的tab
:tabp 前一個
:tabn 後一個
標準模式下:
gt , gT 可以直接在tab之間切換。
還有很多他命令, 看官大人自己, :help table 吧。
多窗口創建及焦點切換:
在Vim中開多窗口其實比較簡單,也有不只一種方法,直接使用命令:new默認就是打開一個水平分割的新窗口。另外一個命令就是:split(sp)。
但是默認水平分割多少有點不爽,因爲本來屏幕就是寬屏的,代碼幾乎不會寫那麼長了,而真正缺少的垂直空間,所以這個時候就要用到垂直分割了,命令是:vsplit(vs),很簡單了一目瞭然。
打開了這麼多窗口不知道如何切換肯定不行啦。切換也很簡單,組合鍵ctrl+w,然後通過j/k,來定位窗口,注意看好窗口光標變化。不過個人感覺這樣比較麻煩,每切換一次窗口都要先按組合鍵才行。還好還有另一種方法,那就是直接連續按兩次ctrl+w組合鍵,vim會自動跳到下一個窗口。
另外更改窗口寬度的命令是: Crtl+w > 將當前窗口向右邊擴展一行,將 > 換成 < 就是向左邊擴展一行。也可以在之前使用數字代表擴展的行數, 5 Ctrl+w > ,向右邊擴展5行。
更改窗口高度類似,只是命令是Ctrl+w + ,增加高度,- 減小高度。
vimdiff:
啓動vimdiff
方法一:# vimdiff FILE_LEFT FILE_RIGHT
方法二:# vim -d FILE_LEFT FILE_RIGHT
方法三:# vim FILE_LEFT 之後打開vim後輸入:vertical diffsplit FILE_RIGHT
窗口布局切換
Ctrl-w K(把當前窗口移到最上邊)
Ctrl-w H(把當前窗口移到最左邊)
Ctrl-w J(把當前窗口移到最下邊)
Ctrl-w L(把當前窗口移到最右邊)
窗口焦點切換,即切換當前窗口
CTRL-w h 跳轉到左邊的窗口
CTRL-w j 跳轉到下面的窗口
CTRL-w k 跳轉到上面的窗口
CTRL-w l 跳轉到右邊的窗口
CTRL-w t 跳轉到最頂上的窗口
CTRL-w b 跳轉到最底下的窗口
CTRL-w w 跳轉到另一個窗口
CTRL-w CTRL-w 跳轉到另一個窗口,同CTRL-w w
光標移動
移動光標,切分窗口會同步移動,使用:set noscrollbind命令可取消同步
]c 跳到下一個不同的地方
[c 跳到上一個不同的地方
上下文摺疊
默認情況下,vimdiff會將文件中不同之處上下6行之外的相同文本摺疊隱藏,可通過 :set diffopt=context:3 修改顯示的上下文行數。
zo 打開摺疊
zc 關閉摺疊
其他摺疊
zf 創建摺疊(使用數字表示創建有當前行到下多少行的摺疊,比如3j就創建包括4行的摺疊)
zo 打開摺疊(l也可以打開摺疊)
zc 關閉當前摺疊
zm 關閉所有摺疊
zr 打開所有摺疊
zE 刪除所有摺疊
zd 刪除當前摺疊
za 若當前打開則關閉,若當前關閉則打開
zj 到下一折疊的開始處
zk 到上一折疊的末尾
文件合併
dp 將當前窗口光標位置處的內容複製到另一窗口
do 將另一窗口光標位置處的內容複製到當前窗口
diffupdate 重新比較兩個文件,如果手動修改文件的話有時不會自動同步
文件操作
yy 複製當前行
nyy 複製當前行開始的n行
dd 刪除當前行
ndd 刪除當前行開始的n行
p 粘貼
u 撤銷
CTRL-r 重複(即取消撤銷)
wa 全部保存
wqa 全部保存後退出
qa 全部退出
qa! 全部強制退出,不保存文件修改
diff:
diff [option] file1 file2
下邊是diff出來的結果:表示file1與file2的從60到63之間4行的比較結果!!
60,63c60,63
< ^[[00;34m malloc|^[[0m 45953 55944474 0^[[00;00m
< ^[[00;34mrealloc|^[[0m 5921 241437 0^[[00;00m (in place: 1363, dec: 52)
< ^[[00;34m calloc|^[[0m 2171 323352 0^[[00;00m
< ^[[00;34m free|^[[0m 54747 55682454
---
> ^[[00;34m malloc|^[[0m 47899 55961673 0^[[00;00m
> ^[[00;34mrealloc|^[[0m 8551 283037 0^[[00;00m (in place: 1411, dec: 52)
> ^[[00;34m calloc|^[[0m 2433 341968 0^[[00;00m
> ^[[00;34m free|^[[0m 58869 55759829
下邊是diff添加選項-crN出來的結果:只發生+或-操作合併顯示;發生修改則分開顯示!!
*** 37,42 ****
--- 37,43 ----
#define ENABLE_TOUCH_EVENTS @ENABLE_TOUCH_EVENTS_VALUE@
#define ENABLE_VIDEO @ENABLE_VIDEO_VALUE@
#define ENABLE_WEB_SOCKETS @ENABLE_WEB_SOCKETS_VALUE@
+ #define ENABLE_WML @ENABLE_WML_VALUE@
#define ENABLE_WORKERS @ENABLE_WORKERS_VALUE@
#define ENABLE_XHTMLMP @ENABLE_XHTMLMP_VALUE@
#define ENABLE_XPATH @ENABLE_XPATH_VALUE@
*** 126,130 ****
ENDIF ()
ENDFOREACH ()
! SOURCE_GROUP("DerivedSources" REGULAR_EXPRESSION "${DERIVED_SOURCES_WEBCORE_DIR}")
ENDMACRO ()
--- 126,130 ----
ENDIF ()
ENDFOREACH ()
! SOURCE_GROUP("DerivedSources" REGULAR_EXPRESSION "${DERIVED_SOURCES_DIR}")
ENDMACRO ()
下邊是diff添加選項-uarN出來的結果:從file1的第1225行開始的7行之內有刪除,從file2的第1159行開始的6行之內有添加或修改!!
@@ -1225,7 +1159,6 @@
XPATH support : $enable_xpath
XSLT support : $enable_xslt
Spellcheck support : $enable_spellcheck
- Animation API : $enable_animation_api
GTK+ configuration:
GTK+ version : $with_gtk
diff -uarN r85406/GNUmakefile.am r82327/GNUmakefile.am
--- r85406/GNUmakefile.am 2011-06-20 13:27:54.000000000 +0800
+++ r82327/GNUmakefile.am 2011-06-20 10:23:56.000000000 +0800