欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

非常強大的文件比較工具:Vimdiff

系統 1673 0
各種 IDE 大行其道的同時,傳統的命令行工具以其短小精悍,隨手可得的特點仍有很大的生存空間,這篇短文介紹了一個文本比較和合并的小工具:vimdiff。希望能對在 Unix/Linux 系統上進行開發的朋友有所幫助。

源程序文件(通常是純文本文件)比較和合并工具一直是軟件開發過程中比較重要的組成部分。現在市場上很多功能很強大的專用比較和合并工具,比如 BeyondCompare;很多IDE 或者軟件配置管理系統,比如Eclipse, Rational ClearCase都提供了內建的功能來支持文件的比較和合并。

當遠程工作在Unix/Linux平臺上的時候,恐怕最簡單而且到處存在的就是命令行工具,比如diff??上iff的功能有限,使用起來也不是很方便。作為命令行的比較工具,我們仍然希望能擁有簡單明了的界面,可以使我們能夠對比較結果一目了然;我們還希望能夠在比較出來的多處差異之間快速定位,希望能夠很容易的進行文件合并……。而Vim提供的diff模式,通常稱作vimdiff,就是這樣一個能滿足所有這些需求,甚至能夠提供更多的強力工具。在最近的工作中,因為需要做很多的文件比較和合并的工作,因此對Vimdiff的使用做了一個簡單的總結。我們先來看看vimdiff的基本使用。

啟動方法

首先保證系統中的diff命令是可用的。Vim的diff模式是依賴于diff命令的。Vimdiff的基本用法就是:


            # vimdiff  FILE_LEFT  FILE_RIGHT

          

或者


            # vim -d  FILE_LEFT  FILE_RIGHT

          

圖一就是vimdiff命令的執行結果的畫面。


圖1

從上圖我們可以看到一個清晰的比較結果。屏幕被垂直分割,左右兩側分別顯示被比較的兩個文件。兩個文件中連續的相同的行被折疊了起來,以便使用者能把注意力集中在兩個文件的差異上。只在某一文件中存在的行的背景色被設置為藍色,而在另一文件中的對應位置被顯示為綠色。兩個文件中都存在,但是包含差異的行顯示為粉色背景,引起差異的文字用紅色背景加以突出。

除了用這種方法啟動vim的diff模式之外,我們還可以用分割窗口命令來啟動diff模式:


            # vim FILE_LEFT

          

然后在vim的ex模式(也就是"冒號"模式)下輸入:


            :vertical diffsplit FILE_RIGHT

          

也可以達到同樣的效果。如果希望交換兩個窗口的位置,或者希望改變窗口的分割方式,可以使用下列命令:

1. Ctrl-w K(把當前窗口移到最上邊)
2. Ctrl-w H(把當前窗口移到最左邊)
3. Ctrl-w J(把當前窗口移到最下邊)
4. Ctrl-w L(把當前窗口移到最右邊)

其中1和3兩個操作會把窗口改成水平分割方式。




回頁首


光標移動

接下來試試在行間移動光標,可以看到左右兩側的屏幕滾動是同步的。這是因為"scrollbind"選項被設置了的結果,vim會盡力保證兩側文件的對齊。如果不想要這個特性,可以設置:


            :set noscrollbind

          

可以使用快捷鍵在各個差異點之間快速移動。跳轉到下一個差異點:


            ]c


          

反向跳轉是:


            [c

          

如果在命令前加上數字的話,可以跳過一個或數個差異點,從而實現跳的更遠。比如如果在位于第一個差異點的行輸入"2]c",將越過下一個差異點,跳轉到第三個差異點。




回頁首


文件合并

文件比較的最終目的之一就是合并,以消除差異。如果希望把一個差異點中當前文件的內容復制到另一個文件里,可以使用命令


            dp (diff "put")

          

如果希望把另一個文件的內容復制到當前行中,可以使用命令


            do (diff "get",之所以不用dg,是因為dg已經被另一個命令占用了)

          

如果希望手工修改某一行,可以使用通常的vim操作。如果希望在兩個文件之間來回跳轉,可以用下列命令序列:


            Ctrl-w, w

          

在修改一個或兩個文件之后,vimdiff會試圖自動來重新比較文件,來實時反映比較結果。但是也會有處理失敗的情況,這個時候需要手工來刷新比較結果:


            :diffupdate

          

如果希望撤銷修改,可以和平常用vim編輯一樣,直接


            <ESC>, u

          

但是要注意一定要將光標移動到需要撤銷修改的文件窗口中。




回頁首


同時操作兩個文件

在比較和合并告一段落之后,可以用下列命令對兩個文件同時進行操作。比如同時退出:


            :qa (quit all)

          

如果希望保存全部文件:


            :wa (write all)

          

或者是兩者的合并命令,保存全部文件,然后退出:


            :wqa (write, then quit all)

          

如果在退出的時候不希望保存任何操作的結果:


            :qa! (force to quit all)

          




回頁


上下文的展開和查看

比較和合并文件的時候經常需要結合上下文來確定最終要采取的操作。Vimdiff 缺省是會把不同之處上下各 6 行的文本都顯示出來以供參考。其他的相同的文本行被自動折疊。如果希望修改缺省的上下文行數,可以這樣設置:


            :set diffopt=context:3

          

可以用簡單的折疊命令來臨時展開被折疊的相同的文本行:


            zo (folding open,之所以用z這個字母,是因為它看上去比較像折疊著的紙)

          

然后可以用下列命令來重新折疊:


            zc (folding close)

          

下圖是設置上下文為3行,并展開了部分相同文本的vimdiff屏幕:


非常強大的文件比較工具:Vimdiff





結論

在無法使用圖形化的比較工具的時候,或者在需要快速比較和合并少量文件的時候,Vimdiff是最好的選擇。

非常強大的文件比較工具:Vimdiff


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!?。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩精品成人 | 国产精品成人观看视频国产 | 在线观看中文字幕 | 成年网址网站在线观看 | 亚洲第一成网站 | 婷婷尹人香蕉久久天堂 | 免费级毛片 | 精品国产乱码久久久久久丨区2区 | 波多野结衣免费线在线 | 九九热线精品视频6一 | 夜婷婷| 欧洲亚洲精品久久久久 | 成人在线视频精品 | 狠日日 | 91精品国产综合久久福利软件 | 一级毛片a级| 五月婷婷激情六月 | 一级鲁丝片 | 成人深夜视频在线观看 | 毛片免费在线 | 久草在线观看首页 | 日韩欧美一级大片 | 国产一区二区三区免费观看 | 国产亚洲综合一区在线 | 开心伊人| 午夜性啪啪A片免费播放 | 亚洲午夜精品A片久久WWW软件 | 天天影院成人免费观看 | 免费v片| 日本在线播放不卡一区二区三区 | 亚洲一区中文字幕 | 天天爱夜夜 | 人人干人人插 | 狠狠色欧美亚洲狠狠色五 | 国产精品免费观看 | 亚州毛色毛片免费观看 | 午夜国产| 好吊日在线视频 | 成人5252色 | 热re91久久精品国产99热 | 在线精品自拍亚洲第一区 |