Vimscript 路徑

2018-02-24 16:02 更新

Vim是一個(gè)文本編輯器,而文本編輯器(經(jīng)常)處理文本文件。文本文件儲(chǔ)存在文件系統(tǒng)中, 而我們使用路徑來描述文件。Vimscript有一些內(nèi)置的方法會(huì)在你需要處理路徑時(shí)幫上大忙。

絕對(duì)路徑

有時(shí)外部腳本也需要獲取特定文件的絕對(duì)路徑名。執(zhí)行下面的命令:

:echom expand('%')
:echom expand('%:p')
:echom fnamemodify('foo.txt', ':p')

第一個(gè)命令顯示我們正在編輯的文件的相對(duì)路徑。%表示"當(dāng)前文件"。 Vim也支持其他一些字符串作為expand()的參數(shù)。

第二個(gè)命令顯示當(dāng)前文件的完整的絕對(duì)路徑名。字符串中的:p告訴Vim你需要絕對(duì)路徑。 這里也有許多別的修飾符可以用到。

第三個(gè)命令顯示了當(dāng)前文件夾下的文件foo.txt的絕對(duì)路徑,無論文件是否存在。(譯注:試一下看看文件不存在的情況?)?fnamemodify()是一個(gè)比expand()靈活多了的Vim函數(shù), 你可以指定任意文件名作為fnamemodify()的參數(shù),而不僅僅是expand()所需要的那種特殊字符串。

列出文件

你可能想要得到一個(gè)特定文件夾下的文件列表。執(zhí)行下面的命令:

:echo globpath('.', '*')

Vim將輸出當(dāng)前目錄下所有的文件和文件夾。globpath()函數(shù)返回一個(gè)字符串, 其中每一項(xiàng)都用換行符隔開。為了得到一個(gè)列表,你需要自己去split()。執(zhí)行這個(gè)命令:

:echo split(globpath('.', '*'), '\n')

這次Vim顯示一個(gè)包括各個(gè)文件路徑的Vimscript列表。 如果你的文件名里包括了換行符,那就只能由你自己想辦法了。

globpath()的通配符(wildcards)的工作方式就像你所想的一樣。執(zhí)行下面的命令:

:echo split(globpath('.', '*.txt'), '\n')

Vim顯示一個(gè)當(dāng)前文件夾下的所有.txt文件組成的列表。

你可以用**遞歸地列出文件。執(zhí)行這個(gè)命令:

:echo split(globpath('.', '**'), '\n')

Vim將列出當(dāng)前文件夾下的所有文件及文件夾。

globpath()_非常地_強(qiáng)大。在你完成本章練習(xí)后,你將學(xué)到更多內(nèi)容。

練習(xí)

閱讀:help expand().

閱讀:help fnamemodify().

閱讀:help filename-modifiers.

閱讀:help simplify().

閱讀:help resolve().

閱讀:help globpath().

閱讀:help wildcards.

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)