Vim是一个文本编辑器,并且文本编辑器经常是对文本文件进行操作。文本文件是在文件系统里进行管理的,我们需要通过文件路径来指定文件。当你需要对路径进行操作的时候,vim提供了一些很有用的内置函数。
有些时候外部脚本取得某些文件的路径是很简单的。运行下面的命令:
:echom expand('%')
:echom expand('%:p')
:echom fnamemodify('foo.txt',':p')
第一条命令用来显示你当前在编辑的文件的相对路径。%代表“当前文件”。vim里还有很多可以用expand()来进行替换的字符串。
第二条命令会输出当前文件的全路径。字符串里的:p用来告诉vim取文件的全路径。vim里也有很多这样的修饰符可以使用。
第三条命令根据当前路径显示foo.txt文件的绝对路径,而不用考虑这个文件是否存在。fnamemodify()是一个vim函数,它比expand()函数更加灵活,因为它可以指定任何文件,不仅仅只是expand()的特殊字符。
有时候你会需要取得某个目录下的文件列表。运行下面的命令:
:echo globpath('.','*')
Vim会列出当前目录下的所有文件。globpath()函数返回一个字符串,包含所有的文件名,文件名之间用回车分割。如果想要拿到第一个列表的话,你可以自己用split来切分。运行下面的命令:
:echo split(globpath('.','*'),'\n')
这次vim会输出一个包含所有文件的列表。
golbpath函数的通配符基本上也是按照你所认为的方式去工作的。运行下面的命令:
:echo split(globpath('.','*.txt'),'\n')
Vim输出当前目录的下所有的以.txt结尾的文件的列表。
你可以通过**来递归地列举当前文件夹下的所有文件。运行下面的命令:
:echo split(globpath('.','**'))
Vim会输出当前文件夹下的所有文件和文件夹。
globpath的功能非常强大,在你完成本章的练习之后,你会学到更多东西。
练习