使用 sublime text api open_file(),但路径不正确

use sublime text api open_file(), but path is not correct

我想为 JavaScript 编写一个类似 ctags 的 Sublime Text 插件,我需要使用 sublime.Window.open_file() 函数。

但是没有用,我打印了路径,但是好像和我传给api的路径不一样。

print("needOpen  "+needOpen)
root.view.window().open_file(needOpen)

控制台

needOpen  C:/Users/lujunhao/AppData/Roaming/npm/node_modules/fis/node_modules/fis-kernel/fis-kernel.js

Unable to open /C/Users/lujunhao/AppData/Roaming/npm/node_modules/fis/node_modules/fis-kernel/fis-kernel.js

无法看到您的完整代码,最可能的解释是

root.view.window().open_file("C:/Users/lujunhao/AppData/Roaming/npm/node_modules‌​/fis/node_modules/fis-kernel/fis-kernel.js")

工作,但是

needOpen = "C:/Users/lujunhao/AppData/Roaming/npm/node_modules/fis/node_modules/fis-kernel/‌​fis-kernel.js"
# ...
root.view.window().open_file(needOpen)

不工作是 needOpen 可能对调用 open_file() 的函数不可见。例如,如果您的代码如下所示:

needOpen = "C:/Users/lujunhao/AppData/Roaming/npm/node_modules/fis/node_modules/fis-kernel/‌​fis-kernel.js"

def openFile(root):
    root.view.window().open_file(needOpen)

openFile(root)

最后一行对 open_file() 的调用将不起作用。这是因为needOpen定义在外层命名空间,但是由于没有作为参数传递给openFile()函数,所以函数里面的代码是看不到的。要解决此问题,请将 needOpen 作为参数传递给 openFile() 函数:

needOpen = "C:/Users/lujunhao/AppData/Roaming/npm/node_modules/fis/node_modules/fis-kernel/‌​fis-kernel.js"

def openFile(root, needOpen):
    root.view.window().open_file(needOpen)

openFile(root, needOpen)

现在,假设 needOpen 的定义和对 openFile() 的调用在同一个命名空间中,您的函数应该按预期工作。


就你关于打印 needOpen 的问题而言,Sublime 在内部将 Windows 风格的路径转换为 ​​Unix 风格的路径,因此你看到的差异无需担心。

我已经解决了我的问题。我错误地忽略了删除“\n”。 传递给 open_file 的路径是 "c:\abc.txt <\n>"。它有换行符。 当我打印路径时,我看不到换行符。所以......

谢谢大家