как вызвать терминал vim под Quartus II?

В программном обеспечении Altera Quartus ii 15.0 вкладка Инструменты->Параметры->Предпочитаемый текстовый редактор используется для изменения редактора при открытии файла. Есть опция для vim, и командная строка выглядит так:

"<<browse to specify executable location>>" -c %l %f

где %l = номер строки и %f = имя файла. Замените его на /usr/bin/vim, щелкните файл в проекте, ничего не появляется. gvim работает нормально, но я хочу использовать терминальную версию. Вот некоторые входы, которые я пробовал:

"/usr/bin/konsole -e vim %f"

Нажатие файловых подсказок не может найти исполняемый файл

"/usr/bin/konsole" -e vim %f

При нажатии на файл ничего не происходит (появляется)

"/usr/bin/konsole" --nofork -e vim %f

То же, что и выше

"/usr/bin/xterm" -e vim %f

Это работает, но я предпочитаю консоль

Я также попытался создать файл bash (уже +x) со следующим содержимым, но тщетно:

#!/usr/bin/bash
konsole --nofork -e vim "$1" > /dev/null 2>&1 # same behavior with/without --nofork and the redirection stuff

Также есть вариант «Пользовательский», и я повторил те же процедуры, что и выше, но не удалось.

Как только я заменю консоль на xterm, все заработает. Так в чем разница между этими двумя? И как я могу вызвать cli vim внутри консоли в этом программном обеспечении? Я помню, что когда я использую gnome-терминал, создание сценария для вызова vim работает отлично, но это другое программное обеспечение, поэтому все может быть по-другому.


person Xiangyu Zhu    schedule 22.09.2015    source источник
comment
Что произойдет, если вы наберете все эти команды в терминале, а не используете Quartus для их запуска?   -  person Renaud Pacalet    schedule 22.09.2015
comment
Заменив %f на имя файла вручную, все вышеперечисленные команды успешно запустят новый терминал с запущенным vim.   -  person Xiangyu Zhu    schedule 22.09.2015
comment
Интересно. Так что, похоже, это Quartus не любит konsole. Я могу ошибаться, но я подозреваю, что проблема с общей библиотекой. Поставщики инструментов САПР, как правило, переопределяют переменные среды, которые указывают на общие библиотеки (например, LD_LIBRARY_PATH), чтобы они указывали на их собственные библиотеки. Они не знают, что это плохо и что это ломает большинство внешних программ, которые они вызывают из своих инструментов. Можете ли вы запустить Quartus из командной строки и просмотреть возможные сообщения об ошибках? Или отключите LD_LIBRARY_PATH в вашем сценарии bash перед запуском konsole.   -  person Renaud Pacalet    schedule 22.09.2015
comment
Когда я запускаю его из CLI, он просто говорит Inconsistency detected by ld.so: dl-close.c: 811: _dl_close: Assertion `map->l_init_called\' failed! при запуске, но ничего не выводит при открытии файла. И echo $LD_LIBRARY_PATH тоже ничего не выводит ни до, ни во время выполнения Quartus ii.   -  person Xiangyu Zhu    schedule 23.09.2015
comment
А как насчет другого предложения: отключить LD_LIBRARY_PATH в вашем сценарии bash перед запуском konsole?   -  person Renaud Pacalet    schedule 23.09.2015
comment
Konsole запускается без проблем. Поскольку LD_LIBRARY_PATH пуст (все время), возможно, сброс настроек здесь не имеет значения.   -  person Xiangyu Zhu    schedule 23.09.2015
comment
Я думаю, мы не понимаем друг друга. Я имел в виду вашу попытку создать файл bash (уже +x) со следующим содержимым, но тщетно. Вы пытались поставить unset LD_LIBRARY_PATH перед вызовом konsole внутри этого скрипта bash и попытаться связать выполнение этого скрипта с командой Quartus?   -  person Renaud Pacalet    schedule 23.09.2015
comment
Извините за задержку с ответом. Это действительно работает! Спасибо!   -  person Xiangyu Zhu    schedule 23.09.2015
comment
Хорошо. Я напишу правдивый ответ, чтобы его могли найти и другие.   -  person Renaud Pacalet    schedule 23.09.2015


Ответы (1)


Это может быть проблема с общей библиотекой. Поставщики инструментов САПР, как правило, переопределяют переменные среды, которые указывают на общие библиотеки (например, LD_LIBRARY_PATH), чтобы они указывали на их собственные библиотеки. К сожалению, это часто приводит к поломке внешнего программного обеспечения, вызываемого из их инструментов, таких как, например, веб-браузеры (для доступа к документации) или редакторы (ваш случай).

Решение, которое иногда работает, состоит в том, чтобы обернуть вызов внешних программных приложений в сценарий оболочки, который исправляет это. В вашем случае вы можете попробовать адаптировать свой скрипт bash:

#!/usr/bin/bash
unset LD_LIBRARY_PATH
konsole --nofork -e vim "$1" > /dev/null 2>&1

и вызовите его из Quartus вместо прямого вызова konsole.

person Renaud Pacalet    schedule 23.09.2015