Я был рад отметить запуск GNOME для vim
в пакете vim-common
после обновления до Ubuntu 16.04, поскольку он предлагает альтернативу gvim
(надежное приложение, хотя и не идеальное для моего рабочего процесса). Но есть проблема с модулем запуска vim
, который легко воспроизводится следующим образом:
vim
на вашем компьютере. файл в терминале. gvim
или любое другое приложение с ожидающими изменениями. vim
умирает вместе с терминалом (оставляя файл подкачки) Я хотел бы найти лучший способ исправления vim.desktop
файл (системная версия в /usr/share/applications
), чтобы сделать пусковую установку vim
жизнеспособной альтернативой gvim
, так как эта пусковая установка по умолчанию подобна аварии, ожидающей случиться.
Опция Terminal=true
выглядит как данность, но Exec=vim %F
уязвима к окраске окна и поэтому должна быть заменена сценарием-обёрткой ... но мне нужен совет по
Мне кажется, что вторая из этих задач невозможна так как вам нужно было бы выполнить IPC с самим сеансом vim
, чтобы потребовать сохранения или удаления файла, в соответствии с выбором пользователя ... но я подумал, что я должен спросить здесь, прежде чем сдаться.
Я уже знаю, gvim
- это обходной путь, но это не будет ответом на сам вопрос. Я просто удивлен, что этот слабый vim
лаунчер поставляется с Ubuntu и другими дистрибутивами, когда он вызывает катастрофу в процессе редактирования.
Ответ заключается в преследовании моего наклона, что сценарий обертки был необходим с тем сценарием, обеспечивающим средства выполнить интерактивную подоболочку (-i
опция к bash
):
/usr/local/bin/vim-gnome-wrap
#!/bin/bash -f
bash -ic 'vim "$@"' vim "$@"
... затем редактирование /usr/share/applications/vim.desktop
или копия это к новому *.desktop
файл, с этими изменениями:
TryExec=vim-gnome-wrap
Terminal=false
Exec=gnome-terminal -e "vim-gnome-wrap %F"
Благодаря @muru для указания на другой поток Unix & Linux: Терминал и Vim, где ради более многочисленного сообщества я предоставил более подробный ответ.
Эта проблема была обсуждена на Unix & Linux. Вполне просто нет никакого реального способа сделать это. Самое простое обходное решение должно выполнить Vim в screen
или tmux
. Вместо:
Exec=vim %F
Имейте:
Exec=screen vim %F
Затем даже при закрытии терминала можно открыть другой терминал и возобновить сессию:
$ pgrep screen -a
974 gnome-screensaver
7853 SCREEN vim
$ screen -r