我对
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;例如,编辑命令也以这种方式行事. (这种类型的命令有名字吗?)
将文件名作为参数的许多基本命令支持反向语法:
原文链接:https://www.f2er.com/bash/383953.htmlcommand `shell command`
要么
command `=vim_expression`
所以你的例子可能写成
cd `=pathname`
如果您在受控环境中运行.您不能在插件中使用此变体,因为a)有可能以您的方式进行的& wildignore设置:set wildignore = * | cd = pathname将使cd失败,无论路径名中存储什么内容,以及b)如果路径名包含换行符将被分成两个或多个目录.因此,您应该用于您打算分享的任何代码片段
execute 'cd' fnameescape(pathname)
.
请注意,您不能使用执行“cd”路径名,因为它不关心路径名中的特殊字符(例如,空格).