vim提供很多內建函式,expand就是其中之一
不多說,先上文件介紹
expand( [, [, ]]) expand()
擴充套件裡的萬用字元和下列關鍵字。
'wildgnorecase' 此處適用。
如果給出且為true,返回列表。否則返回的是字串,且如果返回多個匹配,以字元分隔[備註:5.0版本適用空格。但是檔名如果也包含空格就會有問題]。
如果擴充套件失敗,返回空字串。如果以'%','#'或'<'開始,不返回不存在的檔名。詳見下。
% 當前檔名
# 交換檔名
#n 交換檔名n
游標所在的檔名(其實就是游標所在的乙個字串的名)
自動命令檔名(當expand在自動命令中執行的時候,擴充套件為自動命令所在的檔案的檔名)
自動命令的緩衝區號(當expand在指定命令中執行的時候,擴充套件為自動命令的緩衝區號)
自動命令匹配的名字(絕對路徑下的檔名)
指令碼檔名或者函式名(在指令碼中擴充套件為指令碼檔名,在函式中,擴充套件為函式名)
指令碼檔案的行號(當expand(『』)在某一行,就擴充套件為那一行的行號)
擴充套件為游標所在的單詞
擴充套件為游標所在的字串(比cword擴充套件的更多)
最近收到的訊息的值
修飾符:
:p 擴充套件為完整的路徑
:h 去掉最後乙個部分
:t 只保留最後乙個部分
:r 根部(去掉副檔名)
:e 只有副檔名
如下例子:
72 let s:filename=expand('')
73 let s:afile=expand('')
74 let s:abuf=expand('')
75 let s:amatch=expand('')
76 function! youcompleteme#test()
77 echo s:script_folder_path
78 echo s:filename
79 echo s:afile
80 echo s:abuf
81 echo s:amatch
82 echo expand(':p')
83 echo expand('%')
84 endfunction
輸出:
/root/.vim/bundle/youcompleteme/autoload
echo
youcompleteme.vim
1/root/.vim/bundle/youcompleteme/autoload/youcompleteme.vim
/root/.vim/bundle/youcompleteme/autoload/function youcompleteme#test
youcompleteme.vim
我們看到對於<>這種擴充套件,通常只會返回被引用的檔名,而不會進一步擴充套件。
對於%和#,如果檔名不存在,則返回空字串。
對於不以%、#和《開頭,則以命令列檔名那樣擴充套件。使用'suffixes'和'wildignore'。除非給出可選的引數而且為true.
可以有不存在的檔案的名字。
例如:echo expand("**/readme") 擴充套件當前目錄及子目錄下所有的「readme」(**用於匹配所有目錄,萬用字元)
expand()還可以用來擴充套件變數和只有shell知道的環境變數。
例如:echo expand('$foobar') 如果foobar這個環境變數存在,則擴充套件為其值;如果不存在就直接擴充套件為foobar。
這裡的#目前還不知道具體能做什麼,應該是用於擴充套件交換檔案用,不常用。
ngx process options函式詳解
ngx process options是初始化init cycle中的一些如 conf file,prefix,conf prefix等字段的功能,其方法的定義在src core nginx.c中,以下為詳細 主要功能是將ngx prefix,配置檔案的位置資訊,以及命令列引數的資訊初始化到cycl...
linux clock gettime函式詳解
注意 1.精確級別,納秒級別 原型long sys clock gettime clockid t which clock,struct timespec tp which clock引數解釋 clock realtime 系統實時時間,隨系統實時時間改變而改變,即從utc1970 1 1 0 0 ...
遞迴函式(詳例)
從函式棧的角度的運用 簡單的列印運用 includevoid function int n int main void function int n return 非空鍊錶的遞迴找最大值 lim findmax lim headptr 為了更好的理解遞迴的執行過程 在呼叫自生到最後時,if head...