Откройте файл из командной строки

Версия kile по умолчанию (Kile 2.9.91), поставляемая с kubuntu 18.04, не работает должным образом. В старых версиях это

$ kile myfile.tex

откроет myfile.tex для редактирования. Тем не менее, в текущей версии это пытается и не удается открыть http://myfile.tex, Я получаю сообщение об ошибке: " http://myfile.tex/ Host not found", что не слишком удивительно. Я пытался обернуть имя файла в кавычки, используйте kile ./myfile.tex а также kile file://myfile.tex, Первый ничего не изменил, второй и третий привели к segfault.

Как правильно открывать файлы с помощью командной строки в 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

1 ответ

Грязное время обхода: напишите функцию в свой .bashrc/ .zshrc (другие могут работать, эти два - единственные, которые я проверял), который вызывает realpath чтобы получить абсолютный путь к входному файлу:

function kile-open {
    kile $(realpath $1)
}

Чтобы восстановить намеченное поведение (для одного файла за раз, не работая с какими-либо другими параметрами, это может быть легко улучшено с некоторыми знаниями bash). Это ни в коем случае не решение, просто способ подражать предполагаемому поведению на данный момент.

Вдохновленный решением @m00am, в bash Вы можете добавить следующее к .bashrc:

kile() { command kile $(realpath "$@") }

Команда kile myfile.tex потом будет работать. Лично я даже перенаправляю вывод на /dev/null и отпустите команду:

kile() { command kile $(realpath "$@") > /dev/null 2>&1 & }
Другие вопросы по тегам