?? usr_22.cnx
字號:
*usr_22.txt* For Vim version 6.3. 最近更新:2004年6月 VIM 用戶手冊 - Bram Moolenaar 著 (譯者: Chimin Yen http://vimcdoc.sf.net ) 尋找要編輯的文件到處都是文件, 你怎么查找它們呢? Vim 為我們提供了在目錄樹間瀏覽的種種方法. 還有若干命令讓你從一個文件通過文件名跳轉到一個文件。而且, Vim 還記著曾經編輯過哪些文件。|22.1| 文件瀏覽器|22.2| 當前目錄|22.3| 查找文件|22.4| 緩沖列表 下一章: |usr_23.txt| 編輯特殊文件 前一章: |usr_21.txt| 離開和回來 目錄: |usr_toc.txt|==============================================================================*22.1* 文件瀏覽器Vim 有個插件可以用來編輯一個目錄。試一下這個命令: > :edit .借助魔術般的自動命令和 Vim 腳本功能, 目錄的內容被用來填充窗口。看起來就像這樣: " Press ? for keyboard shortcuts ~ " Sorted by name (.bak,~,.o,.h,.info,.swp,.obj,.orig,.rej at end of list) ~ "= /home/mool/vim/vim6/runtime/doc/ ~ ../ ~ check/ ~ Makefile ~ autocmd.txt ~ change.txt ~ eval.txt~ ~ filetype.txt~ ~ help.txt.info ~你可以看到這樣一些條目:1. 用 ? 鍵取得文件瀏覽器功能的注釋文字.2. 第二行提到怎樣列表目錄里的條目. 它們可以按好幾種方式排序.3. 第三行是當前目錄名.4. "../" 是父目錄. 5. 子目錄名. 6. 普通文件名. 如同再第二行提到的,某些文件在目錄表末尾, 7. 另類普通文件名. 考慮到你會經常用到這些另類, 才把它們移到末尾.如果你啟用了語法高亮功能, 那么, 目錄里不同部分就顯示成不同顏色, 讓你比較容易辨認它們.你可以用普通模式下的 Vim 命令在文本內到處移動. 例如, 移動到一個文件名上并按下<Enter> 鍵. 現在, 你就在編輯那個文件了. 要回到瀏覽器, 再用一次 ":edit ."即可,按 CTRL-O 也行。 試一下把光標移至某個目錄名, 按 <Enter> 鍵. 結果, 瀏覽器就進了該目錄, 并把那里的條目顯示出來. 對準第一個目錄 "../" 按 <Enter> 鍵, 讓你返回父目錄. 按 "-" 鍵可達到同樣的目的, 但無須先把光標移到 "../" 條目上。你可以按 ? 鍵獲取關于瀏覽器功能的簡短幫助. 幫助文字如下: " <enter> : open file or directory ~ " o : open new window for file/directory ~ " O : open file in previously visited window ~ " p : preview the file ~ " i : toggle size/date listing ~ " s : select sort field r : reverse sort ~ " - : go up one level c : cd to this dir ~ " R : rename file D : delete file ~ " :help file-explorer for detailed help ~開頭幾個命令讓你選擇一個文件來顯示. 而文件出現在哪個窗口則取決于你選用的命令: <Enter> 利用當前窗口. o 開啟一個新窗口. O 利用最近訪問過的窗口. p 利用預覽窗口, 并把光標撤回瀏覽器窗口. |preview-window|接下來的幾個命令用來顯示其它信息: i 顯示文件大小和日期. 再執行一次 i 命令將隱藏這些信息. s 根據光標所在的字段排序. 先以 i 命令顯示文件大小和日期, 然后把光標移到任一文件的大小字段上, 并按 s 鍵. 文件條 目就依其大小排序了. 光標在日期字段上時按 s 鍵, 那么文 件條目就依其日期排序. r 逆轉排列順序 (大小或日期二者擇一).還有幾個命令: c 把當前目錄改成顯示在窗口中的那個目錄. 然后你就可以鍵入 ":edit" 命令編輯其中某個文件, 而無須冠以整個路徑. R 為光標下文件改名. Vim 將提示你提供新文件名. D 刪除光標下文件. Vim 將提示你確認刪除動作.==============================================================================*22.2* 當前目錄正如 shell 一樣, Vim 也有當前目錄的概念. 假設你在宿主目錄內, 并要編輯幾個儲存在目錄 "VeryLongFileName" 下的文件. 你可以這樣做: > :edit VeryLongFileName/file1.txt :edit VeryLongFileName/file2.txt :edit VeryLongFileName/file3.txt為了避免太多的鍵擊, 你可以這樣做: > :cd VeryLongFileName :edit file1.txt :edit file2.txt :edit file3.txt":cd" 命令可以用來改變當前目錄. 你可以用 ":pwd" 命令來查看當前目錄使什么: > :pwd /home/Bram/VeryLongFileNameVim 記得最近訪問過的那個目錄. 你可以用 "cd -" 命令回去那兒. 例如: > :pwd /home/Bram/VeryLongFileName :cd /etc :pwd /etc :cd - :pwd /home/Bram/VeryLongFileName :cd - :pwd /etc窗 口 本 地 目 錄當你把窗口一分為二以后, 兩個窗口的當前目錄是一樣的. 而當你要在新窗口內編輯幾個存放在當前目錄以外某處的文件時, 你可以讓新窗口采用不同的當前目錄, 同時保持原窗口當前目錄不變. 新窗口采用的當前目錄稱為本地目錄. > :pwd /home/Bram/VeryLongFileName :split :lcd /etc :pwd /etc CTRL-W w :pwd /home/Bram/VeryLongFileName只要你不發出 ":lcd" 命令, 所有窗口共享同一個當前目錄. 在一個窗口執行一次 ":cd" 命令, 也同時改變其它窗口的當前目錄. 執行過 ":lcd" 命令的窗口記得它特有的當前目錄. 在其它窗口執行 ":cd" 或 ":lcd"命令對它毫無影響. 在一個采用特有當前目錄的窗口執行 ":cd" 命令以后, 該窗口就回過頭來又采用共享的當前目錄了.==============================================================================*22.3* 查找文件假定現在你在編輯一個 C 程序, 該程序有這樣一行: #include "inits.h" ~你想要查看文件 "inits.h" 里有些什么. 把光標移到該文件名上, 并鍵入: > gfVim 就會找到并打開這個文件. 那么, 如果該文件不在當前目錄里怎么辦? Vim 將利用 'path' 選項來尋找這個文件.該選項是一系列目錄名, Vim 會在其中為你尋找文件. 假設你把你的頭文件存放在目錄 "c:/prog/include" 里. 下面這個命令把該目錄加入'path' 選項: > :set path+=c:/prog/include這個目錄名是一絕對路徑. 不管你在哪兒, 它都指向同一目錄. 如果你已經知道要編輯的文件位于當前文件所在目錄下某個子目錄里, 你該怎么辦呢? 那樣的話, 你可以指定一個相對路徑. 相對路徑以 "." 開始:> :set path+=./proto這個命令告訴 Vim 到目錄 "proto" 里找文件, 而 "proto" 則位于你在其中用了 "gf"命令的文件所在的目錄下面. 如此一來, 對 "inits.h" 用 "gf" 命令, 就讓 Vim 以當前文件所在目錄為起點, 尋找 "proto/inits.h". 如果不加 "./", 只用 "proto", Vim 就會進入當前目錄下的 "proto" 目錄尋找. 然而當前目錄可能不是你在編輯的這個當前文件所在的目錄.'path' 選項還允許你用其它許多方法來指定在其中尋找文件的目錄. 參見關于 'path' 選項的幫助. 'isfname' 選項用來決定哪些字符可用于文件名, 以及哪些不可以 (如上例中的雙引號 " 字符).當你要找的文件名沒出現在你編輯的文件里時, 你可以鍵入這個文件名: > :find inits.h然后 Vim 就利用 'path' 選項來確定該文件的位置. 這就跟 ":edit" 命令一樣, 只不過 ":edit" 命令不用 'path' 選項.要在新窗口內打開那個已經找到的文件, 用 CTRL-W f, 而不是 "gf", 或用 ":sfind" 而不是 ":find".有個好辦法可以直接啟動 Vim 來編輯 'path' 中的某個文件: > vim "+find stdio.h"這會在你的 'path' 中查找 "stdio.h"。雙引號是必需的,用來把括起來的當做一個參數|-+c|。==============================================================================*22.4* 緩沖列表Vim 編輯器使用術語緩沖來描述編輯當中的文件. 實際上, 緩沖是你編輯的文件的副本. 你修改完緩沖, 就把緩沖的內容寫進文件. 緩沖不僅存放文件內容, 而且還存放著全部標記,設定, 以及其它跟被編輯文件相關的東西.隱 性 緩 沖假設你在編輯文件 one.txt, 同時又要編輯文件 two.txt. 你本來可以簡單地用 ":edit two.txt" 來辦到, 但由于你已經修改了 one.txt, 那樣做就沒用了. 而你又不想在此時就把 one.txt 存盤. Vim 可以為你解決這個問題: > :hide edit two.txt緩沖 "one.txt" 從屏幕消失, 但 Vim 仍然知道你在編輯這個緩沖, 因而保留著它修改過的文本. 這樣的緩沖稱為隱性緩沖: 緩沖存放著文本, 但你看不見它. 命令 ":hide" 的參數是另一個命令. 它使得那個命令表現得就像 'hidden' 選項已被設定. 你也可以不用 ":hide" 命令而設定 'hidden' 選項. 其作用是當離開任何緩沖時,該緩沖被變成為隱性緩沖. 小心! 當你的隱性緩沖已經改動, 千萬不要在所有緩沖存盤之前就退出 Vim. 惰 性 緩 沖 一個緩沖一經使用, Vim 就記住了一些有關該緩沖的信息. 即使它既不顯示在窗口內,又非隱性緩沖, 它也仍然在緩沖列表上. 這樣的緩沖稱為惰性緩沖. 一般而言, 活性 顯示在窗口內, 并加載文本 隱性 不顯示在窗口內, 但加載文本 惰性 不顯示在窗口內, 不加載文本惰性緩沖不會被遺忘, 因為 Vim 保存著關于它們的信息, 如標記等. 而且記住文件名有個好處, 你可以調閱你編輯過的文件名, 再次編輯它們.緩 沖 列 表你可以用這個命令查看緩沖列表: :buffers另一個作用相當的命令, 雖然意思不那么明白, 但鍵入時省事多了: > :ls其輸出可能像這樣: 1 #h "help.txt" line 62 ~ 2 %l+ "usr_21.txt" line 1 ~ 3 "usr_toc.txt" line 1 ~第一欄存放緩沖號. 你可以利用它來編輯文件, 而不用鍵入文件名, 參見下文.緊隨緩沖號的是些標記. 然后是文件名, 以及光標最后一次停留的行數. 可能出現的標記有以下這些 (自左至右): u 表列外緩沖 |unlisted-buffer|. % 當前緩沖. # 替緩沖. l 活性緩沖, 緩沖被加載且顯示. h 隱性緩沖, 緩沖被加載但不顯示. = 只讀緩沖. - 不可改緩沖, 'modifiable' 選項不設置. + 已修改緩沖.編 輯 緩 沖你可以通過指定其緩沖號來編輯一個緩沖, 而不必鍵入文件名: > :buffer 2但獲知緩沖號的唯一途徑是查閱緩沖列表. 如果不用緩沖號, 你可以用文件名, 或其部分: :buffer helpVim 將為你鍵入的文件名找到最佳匹配. 如果只有一個緩沖與之匹配, 該緩沖就被選用. 在這個例子中, 被選中的就是 "help.txt". 要在新窗口中打開一個緩沖: :sbuffer 3這方法也適用于文件名.使 用 緩 沖 列 表你可以用這些命令在表列的緩沖間移動: :bnext 編輯下一個緩沖 :bprevious 編輯前一個緩沖 :bfirst 編輯第一個緩沖 :blast 編輯最后一個緩沖要從緩沖列表上刪除一個緩沖, 用這個命令: :bdelete 3同樣, 這命令也適用于文件名. 如果你刪除了一個活性緩沖 (顯示在窗口中的緩沖), 你也就關閉了該窗口. 如果你刪除了當前緩沖, 你也就關閉了當前窗口. 如果它是最后一個窗口, Vim 將找一個緩沖來編輯. 你無法什么也不編輯! Note: 即使用 ":bdelete" 命令刪除了緩沖以后, Vim 依然記得它. 這個緩沖實際上 成了 "表列外" 緩沖, 它不再出現在 ":buffers" 命令所報告的列表中. 而 ":buffers!" 命令則將表列 "表列外" 緩沖 (沒錯, Vim 無所不能). 要讓 Vim 徹底忘記一個緩沖, 用 ":bwipe" 命令. 并參見 'buflisted' 選項. ==============================================================================下一章: |usr_23.txt| 編輯其它文件版權: 參見 |manual-copyright| vim:tw=78:ts=8:ft=help:norl:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -