2013-02-26 106 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