kubuntu 18.04 附带的默认 kile 版本 (Kile 2.9.91) 未按预期运行。在旧版本中,这
$ kile myfile.tex
Run Code Online (Sandbox Code Playgroud)
将打开myfile.tex进行编辑。但是,在当前版本中,这会尝试打开http://myfile.tex. 我得到的错误信息是“ http://myfile.tex Host not found”,这并不奇怪。我试图将文件名用引号括起来,使用kile ./myfile.tex和kile file://myfile.tex。第一个没有改变任何东西,第二个和第三个导致段错误。
在 Kile 2.9.91 中使用命令行打开文件的正确方法是什么?
$ kile myfile.tex -> Error: http://myfile.tex
$ kile "myfile.tex" -> Error: http://myfile.tex
$ kile myfile.txt -> Error: http://myfile.txt
$ kile myfile -> Error: http://myfile
$ kile Documents/myfile.tex -> Error: http://documents/myfile.tex
$ kile ~/Documents/myfile.tex -> Works!
$ kile /home/user/Documents/myfile.tex -> Works!
$ kile $(realpath myfile.tex) -> Works!
$ kile ./myfile.tex -> segfault
$ kile file://myfile.tex -> segfault
Run Code Online (Sandbox Code Playgroud)
肮脏的解决方法时间:将一个函数写入您的.bashrc/ .zshrc(其他人可能会工作,这两个是我测试的唯一的),调用realpath以获取输入文件的绝对路径:
function kile-open {
kile $(realpath $1)
}
Run Code Online (Sandbox Code Playgroud)
重新获得预期的行为(一次针对一个文件,不使用任何其他参数,可以通过一些 bash 知识轻松改进)。这绝不是一个解决方案,只是目前模仿预期行为的一种方法。
受 @m00am 解决方案的启发,bash您可以将以下内容添加到.bashrc:
kile() { command kile $(realpath "$@") }
Run Code Online (Sandbox Code Playgroud)
kile myfile.tex然后该命令将起作用。就我个人而言,我什至将输出重定向到/dev/null并释放命令:
kile() { command kile $(realpath "$@") > /dev/null 2>&1 & }
Run Code Online (Sandbox Code Playgroud)