2013-02-26 105 views
0

假設我們在vimscript中給出了這個字符串:如何從vimscript中的字符串提取文件名?

"/home/Linus Torvalds/.vim/bundle/vim-autoformat/formatters/tidy -q --show-errors 0 --show-warnings 0 --indent auto --indent-spaces 2 --vertical-space yes --tidy-mark no --wrap 68"

我們如何提取文件名部分?在這種情況下,將是:

"/home/Linus Torvalds/.vim/bundle/formatters/tidy"

+0

爲什麼你需要這個?從元素中構建這樣一個命令比稍後嘗試解構它要好得多。代碼氣味警報! – 2013-02-26 17:59:02

+1

我看到你的路徑有空格,那麼爲什麼不劃破'-'?所以我認爲文件名是'/ home/Linus Torvalds/.vim/bundle/formatters/tidy -q --show',甚至是'/ home/Linus Torvalds/.vim/bundle/formatters/tidy -q -'有你的文件名的規則? – Kent 2013-02-26 19:53:31

+0

我無法保證文件名中沒有破折號。我改變了例子,立即指出。路徑由用戶給出。 @IngoKarkat這就是爲什麼我不會從它的元素構建它。這是一個可定製的配置,我需要檢查給定的formatprg是否可執行。 – 2013-02-26 20:04:51

回答

0

如果你能保證有路徑本身沒有破折號(-),我會做這樣的:

matchstr(input_string,'^.\{-}\ze -') 

說明:從字符串(^)匹配任何字符的開始非貪婪地(.\{-}),直到第一次出現空格後跟一個破折號(\ze -)。

或者您可以匹配到第一個短劃線,然後使用substitute()命令修剪任何尾隨的空格,這將不那麼簡潔,但可能更具可讀性。

+0

感謝您的回覆。但我不能保證路徑沒有破折號。我會改變這個例子來指出。 – 2013-02-26 20:06:18