我对
vim很新鲜,我很难理解一些使用
vim脚本的细微之处.具体来说,我无法使用期望使用无引号字符串的命令(有这个名称吗?).例如
cd some/unquoted/string/path
let pathname = 'some/path' cd pathname
将尝试将当前目录更改为“pathname”而不是“some / path”.这样做的一个方法是使用
let cmd = 'cd ' . pathname execute cmd
但这似乎有点迂回. This StackOverflow question实际上使用带有变量的cd,但在我的系统上不起作用(“a:path”被视为如上所述的路径).
我使用cd作为一个具体的例子,但这个行为并不是唯一的cd;例如,编辑命令也以这种方式行事. (这种类型的命令有名字吗?)
将文件名作为参数的许多基本命令支持反向语法:
command `shell command`
要么
command `=vim_expression`
所以你的例子可能写成
cd `=pathname`
如果您在受控环境中运行.您不能在插件中使用此变体,因为a)有可能以您的方式进行的& wildignore设置:set wildignore = * | cd = pathname将使cd失败,无论路径名中存储什么内容,以及b)如果路径名包含换行符将被分成两个或多个目录.因此,您应该用于您打算分享的任何代码片段
execute 'cd' fnameescape(pathname)
.
请注意,您不能使用执行“cd”路径名,因为它不关心路径名中的特殊字符(例如,空格).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。