gpt4 book ai didi

Vim: `cd` 到存储在变量中的路径

转载 作者:行者123 更新时间:2023-12-04 01:37:14 24 4
gpt4 key购买 nike

我对 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 独有的;例如, edit命令也以这种方式运行。 (这种类型的命令有名字​​吗?)

最佳答案

TL;博士 :使用 execute 'cd' fnameescape(pathname)
说明 :许多将文件名作为参数的基本命令支持反引号语法:

command `shell command`

或者
command `=vim_expression`

所以你的例子可以写成
cd `=pathname`

如果您在受控环境中运行它。您 不得在插件中使用此变体 因为 a) 有 &wildignore可能会妨碍您的设置: set wildignore=*|cd =pathname将使cd无论 pathname 中存储了什么都失败b) 如果路径名包含换行符,它将被分成两个或多个目录。因此,对于要共享的任何代码段,您应该使用的是
execute 'cd' fnameescape(pathname)

请注意,您不得使用 execute "cd" pathname因为它不关心路径名中的特殊字符(例如,空格)。

关于Vim: `cd` 到存储在变量中的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4596932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com