vim vimdiff diff 使用及命令



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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章