Usr_22

Nvim :help 頁面,使用 tree-sitter-vimdoc 解析器從 來源 產生


VIM 使用者手冊 - 作者:Bram Moolenaar
尋找要編輯的檔案
檔案可能存在於任何地方。那麼要如何找到它們呢?Vim 提供了各種方式來瀏覽目錄樹。有一些指令可以跳到另一個檔案中提及的檔案。而且 Vim 會記住先前編輯過的檔案。
22.1 檔案瀏覽器 22.2 目前目錄 22.3 尋找檔案 22.4 緩衝區列表
下一章:usr_23.txt 編輯其他檔案 前一章:usr_21.txt 離開後再回來 目錄:usr_toc.txt

檔案瀏覽器

Vim 有一個外掛程式可以編輯目錄。試試看:
:edit .
透過自動指令和 Vim 腳本的魔力,視窗將會被目錄的內容填滿。看起來會像這樣:
" ============================================================================
" Netrw 目錄列表 (netrw v109)
" 依名稱排序
" 排序順序:[\/]$,\.h$,\.c$,\.cpp$,,\.info$,\.swp$,\.o$\.obj$,\.bak$
" 快速說明:<F1>:說明 -:上一層目錄 D:刪除 R:重新命名 s:排序依據 x:執行
" ============================================================================
../
./
check/
Makefile
autocmd.txt
change.txt
eval.txt~
filetype.txt~
help.txt.info
你可以看到這些項目:
1. 瀏覽工具的名稱和版本號 2. 瀏覽目錄的名稱 3. 排序方式(可能是依名稱、時間或大小)4. 名稱的排序方式(目錄優先,然後是 *.h 檔案、*.c 檔案等等)5. 如何取得說明(使用 <F1> 鍵),以及可用指令的簡短列表 6. 檔案列表,包含 "../",這允許你列出上一層目錄。
如果你啟用了語法高亮,不同的部分會被高亮顯示,以便更容易辨識。
你可以使用一般模式的 Vim 指令在文字中移動。例如,將游標移動到檔案上方,然後按下 <Enter>;你將會開始編輯該檔案。要返回瀏覽器,再次使用 ":edit .",或者使用 ":Explore"。CTRL-O 也有效。
嘗試在游標位於目錄名稱上方時使用 <Enter>。結果是檔案瀏覽器會移動到該目錄並顯示那邊找到的項目。在第一個目錄 "../" 上按下 <Enter> 會讓你向上移動一層。按下 "-" 會做同樣的事情,而不需要先移動到 "../" 項目。
你可以按下 <F1> 來取得 netrw 檔案瀏覽器中可以執行的操作說明。你會看到這些:
9. Directory Browsing         netrw-browse   netrw-dir   netrw-list   netrw-help
MAPS                                                                 netrw-maps
     <F1>.............Help.......................................|netrw-help|
     <cr>.............Browsing...................................|netrw-cr|
     <del>............Deleting Files or Directories..............|netrw-delete|
     -................Going Up...................................|netrw--|
     a................Hiding Files or Directories................|netrw-a|
     mb...............Bookmarking a Directory....................|netrw-mb|
     gb...............Changing to a Bookmarked Directory.........|netrw-gb|
     cd...............Make Browsing Directory The Current Dir....|netrw-c|
     d................Make A New Directory.......................|netrw-d|
     D................Deleting Files or Directories..............|netrw-D|
     <c-h>............Edit File/Directory Hiding List............|netrw-ctrl-h|
     i................Change Listing Style.......................|netrw-i|
     <c-l>............Refreshing the Listing.....................|netrw-ctrl-l|
     o................Browsing with a Horizontal Split...........|netrw-o|
     p................Use Preview Window.........................|netrw-p|
     P................Edit in Previous Window....................|netrw-p|
     q................Listing Bookmarks and History..............|netrw-qb|
     r................Reversing Sorting Order....................|netrw-r|
(等等)
因此,<F1> 鍵會帶你到 netrw 目錄瀏覽內容說明頁面。這是一個普通的說明頁面;使用常用的 CTRL-] 來跳到有標籤的說明項目,並使用 CTRL-O 來跳回。
選擇要顯示和編輯的檔案:(游標位於檔案名稱上方)
<enter> 在目前視窗中開啟檔案。 netrw-cr o 水平分割視窗並顯示檔案 netrw-o v 垂直分割視窗並顯示檔案 netrw-v p 使用 預覽視窗 netrw-p P 在前一個視窗中編輯 netrw-P t 在新分頁中開啟檔案 netrw-t
以下的一般模式指令可用來控制瀏覽器的顯示:
i 控制列表樣式(精簡、長、寬和樹狀)。長列表包含大小和日期資訊。s 重複按下 s 會改變檔案的排序方式;可以依名稱、修改時間或大小排序。r 反轉排序順序。
額外的一般模式指令範例:
cd 將 Vim 的目前目錄的概念更改為與瀏覽器目錄相同。(參見 g:netrw_keepdir 來控制此行為) R 重新命名游標下的檔案或目錄;將會出現提示要求輸入新名稱。D 刪除游標下的檔案或目錄;將會出現確認請求。mb gb 建立書籤/前往書籤
也可以使用指令模式;同樣地,只是一個範例:
:Explore [目錄] 瀏覽指定的/目前目錄 :NetrwSettings 你的目前 netrw 設定的完整列表,包含說明連結。
netrw 瀏覽器不限於你的本機;可以使用如下的網址:(尾部的 / 很重要)
:Explore ftp://somehost/path/to/dir/ :e scp://somehost/path/to/dir/
參見 netrw-browse 取得更多資訊。

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/VeryLongFileName
Vim 會記住你上次使用的目錄。使用 "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 指令時,它會回到使用共享目錄。

分頁本機目錄

當你開啟新的分頁時,它會使用前一個開啟新分頁的視窗所在的分頁的目錄。你可以使用 :tcd 指令更改目前分頁的目錄。分頁中的所有視窗都會共享此目錄,除了具有視窗本機目錄的視窗。在此分頁中開啟的任何新視窗都會使用此目錄作為目前工作目錄。在分頁中使用 :cd 指令不會更改具有分頁本機目錄的分頁的工作目錄。當使用分頁中的 :cd 指令更改全域工作目錄時,它也會更改目前分頁的工作目錄。

22.3 尋找檔案

你正在編輯一個 C 程式,其中包含這一行:
#include "inits.h"
你想要查看 "inits.h" 檔案的內容。將游標移動到檔案名稱上,然後輸入:
gf
Vim 會找到該檔案並編輯它。如果檔案不在目前目錄中呢?Vim 會使用 'path' 選項來尋找該檔案。此選項是要尋找檔案的目錄名稱列表。假設你的 include 檔案位於 "c:/prog/include"。這個指令會將它新增到 'path' 選項中:
:set path+=c:/prog/include
這個目錄是絕對路徑。無論你在哪裡,它都會是相同的地方。如果你的檔案位於子目錄中,在檔案所在位置的下方呢?那麼你可以指定相對路徑名稱。這會以點開始:
:set path+=./proto
這會告訴 Vim 在你使用 "gf" 的檔案所在目錄的下方,尋找 "proto" 目錄。因此,在 "inits.h" 上使用 "gf" 會讓 Vim 從檔案所在的目錄開始,尋找 "proto/inits.h"。如果沒有 "./",而是 "proto",Vim 會在目前目錄下方的 "proto" 目錄中尋找。而且目前目錄可能不是你正在編輯的檔案所在的位置。
'path' 選項允許以更多方式指定要搜尋檔案的目錄。請參閱 'path' 選項的說明。'isfname' 選項用於決定哪些字元包含在檔案名稱中,哪些字元不包含(例如,上述範例中的 " 字元)。
當你知道檔案名稱,但它沒有在檔案中找到時,你可以輸入它:
:find inits.h
然後 Vim 會使用 'path' 選項來嘗試找到該檔案。這與 ":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" 的引數是另一個指令。":hide" 會使該指令的行為如同設定了 'hidden' 選項。你也可以自己設定此選項。效果是,當任何緩衝區被捨棄時,它會變成隱藏的。小心!當你有包含變更的隱藏緩衝區時,請務必在儲存所有緩衝區後再結束 Vim。

非活動緩衝區

當緩衝區被使用過一次時,Vim 會記住關於它的一些資訊。當它沒有顯示在視窗中,而且不是隱藏的時,它仍然會在緩衝區列表中。這稱為非活動緩衝區。概觀:
活動 顯示在視窗中,載入文字。隱藏 不在視窗中,載入文字。非活動 不在視窗中,沒有載入文字。
會記住非活動緩衝區,因為 Vim 會保留關於它們的資訊,例如標記。而且記住檔案名稱也很有用,這樣你就可以看到你編輯過哪些檔案。並再次編輯它們。

列出緩衝區

使用此指令檢視緩衝區列表:
:buffers
一個執行相同操作的指令,列出緩衝區的指令不是那麼明顯,但是輸入起來短得多:
:ls
輸出看起來會像這樣:
1 #h "help.txt" line 62
2 %a + "usr_21.txt" line 1
3 "usr_toc.txt" line 1
第一欄包含緩衝區編號。您可以使用此編號來編輯緩衝區,而無需輸入名稱,請參閱下方說明。緩衝區編號之後是標記。然後是檔案名稱以及上次游標所在位置的行號。可能出現的標記如下(從左到右):
u 緩衝區未列出 未列出緩衝區。% 目前緩衝區。# 替用緩衝區。a 緩衝區已載入並顯示。h 緩衝區已載入但隱藏。= 緩衝區為唯讀。- 緩衝區不可修改,「'modifiable'」選項已關閉。+ 緩衝區已修改。
編輯緩衝區
您可以使用緩衝區的編號來編輯它。這樣可以避免輸入檔案名稱
:buffer 2
但是,要知道編號的唯一方法是查看緩衝區列表。您可以使用名稱或部分名稱來代替
:buffer help
Vim 會找到您輸入的名稱的最佳匹配項。如果只有一個緩衝區符合該名稱,則將使用該緩衝區。在此例中為 "help.txt"。要在新視窗中開啟緩衝區
:sbuffer 3
這也適用於名稱。

使用緩衝區列表

您可以使用以下命令在緩衝區列表中移動
:bnext 前往下一個緩衝區 :bprevious 前往上一個緩衝區 :bfirst 前往第一個緩衝區 :blast 前往最後一個緩衝區
要從列表中移除緩衝區,請使用此命令
:bdelete 3
同樣,這也適用於名稱。如果您刪除一個處於活動狀態(在視窗中可見)的緩衝區,則該視窗將會關閉。如果您刪除目前緩衝區,則目前視窗將會關閉。如果這是最後一個視窗,Vim 將會尋找另一個緩衝區來編輯。您不能編輯任何東西!
注意:即使使用 ":bdelete" 移除緩衝區後,Vim 仍然會記住它。它實際上被設為「未列出」,不再出現在 ":buffers" 的列表中。":buffers!" 命令會列出未列出的緩衝區(是的,Vim 可以做到不可能的事情)。要真正讓 Vim 忘記緩衝區,請使用 ":bwipe"。另請參閱 'buflisted' 選項。
下一章:usr_23.txt 編輯其他檔案
版權:請參閱 manual-copyright vim:tw=78:ts=8:noet:ft=help:norl
主頁
命令索引
快速參考