Vim學習筆記(3)vim手冊 7.編輯多個文件 8.分割窗口

                                                                  編輯多個文件
  • 文件列表:
               vim one.c two.c three.c
               Vim將在啓動後只顯示第一個文件。用:next調動下一個
               if出現E37,則:next!,或者:wnext,  :previous調到前一個(縮寫,next=n,previous=prev)
               :last  :first   :2next

               查看整個列表中就有哪些文件
                    :args
  • 自動存盤
               如果你確定自己每次都是要保存文件,就可以告訴Vim每當需要時就自動保存文件
                    :set autowrite
                    :set noautowrite
  • 編輯另一個文件列表:
               重新定義一個文件列表
                    :args five.c six.c seven.h
               或者用一個通配符,就象在shell使用通配符一樣:
                    :args *.txt ,用該目錄下所有txt文件創建一個文件列表
---------------------------------------------------------------------------------------------------------------------------
  • 預定義的標記(:jumps列出跳跳路徑)
               ' "標記上次你離開該文件時光標所在的位置
                  ' .標記最後一次對文件做出改動處
  • 文件標記
               可以用"mx"在一箇中某個設置一個標記,然後用" 'x"可以將光標移到該位置
               (x是小寫字母在當前文件內有效)
               還有一種以大寫字母命名的標記。它們是全局標記,它們可以用在任何文件中。
               mX定義,'X可以全局移動(跳完了想回來可以ctrl o)
               
               要知道某個標記所代表的位置是什麼,可以將該標記的名字作爲"marks"命令的參數:
                    eg. :marks M,   而 :marks是列出這些標記(此時會看到文件名,小寫字母會看到文本)
-----------------------------------------------------------------------------------------------------------------------------
     備份:
               :set  backup生成的備份文件名將是原文件名後面附加一個~。
               :set  backupext=.bat,生成的備份文件名是.bat,可以自己隨便定義
               如果“backup”選項是關閉的但“writebackup”選項是打開的,Vim還會生成一個備份文件。
               但是,一旦該文件被成功地保存它就會被自動刪除。

     保存原始版本:
               保存一份修改前的原始文件的一個副本。:set patchmode=.orig
  ----------------------------------------------------------------------------------------------------------------------------   
  • 文件間複製粘貼:
                    使用寄存器:一個寄存器只是Vim用來存放文本的地方,用從a到z這26個字母作爲寄存器的名字
                         1) 把一個句子複製到名爲f的寄存器中
                                   "fyas,  "爲引用register,f爲寄存器的名,yas = yank a sentence 複製一個句子
                                    (yas是文本對象)
                                   整個意思是:將光標所在的句子複製到寄存器 f中
                         2)把3個整行的內容放到寄存器 l 中
                                   "l3Y (小寫y是複製4行)
                         3)命令計數也可以放在"l的前面。要複製一個文本塊到寄存器b中
                                   CTRL-Vjjww"by(大寫的V就是意思還要按住shift)
                         注:register,後面可以加其他命令,加d是剪切
                              eg. “wdaw,刪除一個句子放入w register中
  • 查看文件:
                   有時候你只想查看文件的內容而已,並不會向其中寫入什麼東西,可會死習慣:w
                        防止方法:
                                   vim -R file,  linux:view file, 但:w!可以寫
                      使用這個 vim -M file,連:w!都寫不進去(“modifiable” is off)
                    去掉保護層:
                                   :set modifiable
                                   :set write
  • 更改文件名:
                    :saveas filename.exname
          
---------------------------------------------------------------------------------------------------------------------------   
                                            分隔窗口           
  • 分隔一個窗口:
     打開一個新窗口最簡單的辦法就是使用命令:
          :split
     CTRL-W w命令可以切換當前活動窗口。如果你在上面窗口,它會把它帶到下面。
  • 關閉窗口:
      :close
     ":quit"和"ZZ"都會關閉窗口,但是用":close" 可以阻止你關閉最後一個Vim,
      以免以意外地整個關閉了Vim.

  • 關閉除當前窗口外的所有其它窗口:
     :only

  • 爲另一個文件分隔出一個窗口:
     :split two.c
  • 如果要打開一個新窗口並開始編輯一個空的緩衝區,使用命令:
     :new
  • :split命令還可以接受一個參數。如果指定了這個參數的話,它將會作爲新打開窗口的高度。
     :3split filename     高度只有三行          
  •  對於已經打開的窗口有好幾種辦法可以改變它們的大小:(別按住,看vim右下角出現^W再按+ -)
     ctrl-w +
     ctrl-w -
  • 使用鼠標
                    將鼠標置於狀態行。按下鼠標左鍵拖動。狀態行就會跟着上下移動,
                    相應地窗口的高度也跟着變大變小。
  • 垂直分隔:
     :vsplit
     :vsplit two.c
     :vnew = :vertical new命令,用於垂直分隔窗口並在其中打開一個新的空緩衝區
  • 切換窗口:
     CTRL-W h 到左邊的窗口
     CTRL-W j 到下面的窗口
     CTRL-W k 到上面的窗口
     CTRL-W l 到右邊的窗口
     CTRL-W t 到頂部窗口
     CTRL-W b 到底部窗口
  • 移動窗口
                              CTRL-W H 到左邊的窗口
     CTRL-W J 到下面的窗口
     CTRL-W K 到上面的窗口
     CTRL-W L 到右邊的窗口     
  • 針對所有窗口操作的命令:
     打開一大堆窗口的情況下要退出Vim:
     :qall = quit all
     :wall = write all
     :wqall = :wall :qall
  • 爲所有文件打開窗口:
shell
     vim -o one.txt two.txt three.txt
     "-O"參數可以使打開的窗口都垂直排列。
     如果已經進入了vim, ":all"命令會爲命令行上指定的所有文件各開一個窗口。
     ":vertical all"則讓打開的窗口都是垂直分隔。??
     "-O"參數可以使打開的窗口都垂直排列。
  • 使用vimdiff查看同
windows下diff不了方法:
在_vimrc或.vimrc中找到下面代碼:

        if &sh =~ '<cmd'

            let cmd = '""' . $VIMRUNTIME . 'diff"'

            let eq = '"'

替換成:

        if &sh =~ '<cmd'

            let cmd = '"' . $VIMRUNTIME . 'diff"'

            let eq = '""'

     shell中
     vimdiff main.c~  main.c

運行VIM後比較不同:
     :edit main.c
     :vertical diffsplit main.c

    
已經存在兩個文件在vim中,:diff進入對比狀態
同步滾動:
     如果兩個文件有很多不同之處,你可以以通常方式滾動窗口進行查看。
     :set noscrollbind


跳到不同之處
     如果你禁用了折行顯示,要找到兩個文件的不同之處就要費勁些,命令:
     ]c

     可以直接向前定位到下一個不同之處。向後定義下一個發生改變的行用:
     [c

消除差異:
    你可以在兩個對比窗口中移動文字。這樣做會引起兩個文件對比結果的變化。
    不同之處會減少或增多。 Vim並不時時更新對應的高亮顯示。命令:
           :diffupdate
要消除一個不同之處,你可以把高亮起來的文件從一個窗口移到另一個窗口去。
     dp (有光變的不變)"dp"是"diff put"的縮寫
將光標移到右邊的窗口,到"changed"插入的位置。
     do   "do"意爲"diff obtain"
兩個文件完全相同了,Vim將把所有內容都摺疊起來。
so,dp給另一個窗口,do是得到另一個窗口的差異

























發佈了15 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章