路径

Vim 是一个文本编辑器,而文本编辑器(通常)是用来处理文本文件的。 文本文件存在于文件系统中,而路径就是用来表述文件的。 Vimscript 有一些内置工具,能在你需要处理路径时发挥巨大的作用。

绝对路径

有时候,用一个外部脚本就能很方便地获取一个文件的绝对路径。运行以下命令:

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

第一个命令显示你正在编辑的文件的相对地址。% 表示“当前文件”。 Vim 还支持很多其他的字符串和 expand() 一起使用。

第二个命令显示文件完整的绝对路径。字符串中的 :p 告诉 Vim 我想要的是绝对路径。 同样,也有很多其他的修饰符可以使用。

第三个命令显示当前目录下 foo.txt 文件的绝对地址,不管文件是不是实际存在。 fnamemodify() 是一个比 expand() 更复杂的 Vim 函数,它可以让你指定任何文件名, 而不只是 expand() 中的一个特殊字符串。

列出文件

你或许也想得到某个指定目录中的文件列表。运行以下命令:

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

Vim 会显示当前目录中所有的文件和目录。globpath() 函数返回一行一个文件名的字符串。 要得到一个列表,你需要自行用split() 来分割。运行命令:

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

这次 Vim 显示一个 Vimscript 列表,包含了每个路径。如果你的文件中有换行符,那很抱歉,只能你自己来搞定了。

globpath 中的通配符基本如你预期的那样工作。运行以下命令:

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

Vim 显示当前目录所有 .txt 文件的列表

你可以用 ** 递归的列出所有文件。运行命令:

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

Vim 会显示当前文件夹下的所有文件和目录。

globpath() 十分的强大。等完成本章的练习,你将会学到更多。

练习

阅读 :help expand()

阅读 :help fnamemodify()

阅读 :help filename-modifiers

阅读 :help simplify()

阅读 :help resolve()

阅读 :help globpath()

阅读 :help wildcards

原文地址:http://learnvimscriptthehardway.stevelosh.com/chapters/40.html