Как разрешить пользователю редактировать данные в отдельном приложении от терминала? - PullRequest
1 голос
/ 12 октября 2009

Я пишу приложение для терминала, но хочу, чтобы пользователь мог редактировать определенные текстовые данные в отдельном редакторе. Например, если пользователь решает редактировать список текущих имен пользователей, список должен открываться как текстовый файл в любимом редакторе пользователя (vim, gedit и т. Д.). Вероятно, это будет переменная окружения, такая как $ MYAPPEDITOR. Это похоже на работу сообщений фиксации в SVN.

Это лучший способ сделать это, чтобы создать временный файл в / tmp и прочитать его, когда процесс редактора будет завершен? Или есть лучший способ решить эту проблему?

Ответы [ 3 ]

2 голосов
/ 12 октября 2009

Уже есть переменная $EDITOR, которая является чрезвычайно стандартной, и я видел, как она работает с широким спектром юниксов. Кроме того, vi - это всегда опция для любого варианта Unix.

Debian имеет команду sensible-editor, которая вызывает $EDITOR, если может, или в противном случае возвращается к некоторым стандартным. Freedesktop.org имеет команду xdg-open, которая определит, какая среда рабочего стола запущена, и откроет файл с соответствующим приложением. Насколько я знаю, sensible-editor не существует в других дистрибутивах, и, конечно, xdg-open потерпит неудачу в текстовой среде, но это не помешает попробовать столько вариантов, сколько возможно, если вы думаете, что это Важно, чтобы пользователь рабочего стола мог видеть их счастливые блестящие gedit или kate вместо страшных старых vi или nano. ;)

Способ работы crontab и sudoedit также заключается в создании файла в / tmp. git помещает его в .git, а svn фактически помещает его в текущий каталог (не /tmp).

1 голос
/ 12 октября 2009

svn и mercurial делают это путем создания файла в /tmp.

Кстати, вам не нужен MYAPPEDITOR, на nix уже есть РЕДАКТОР.

0 голосов
/ 12 октября 2009

Поскольку вы упоминаете svn в своем посте, почему бы просто не следовать той же методологии? svn открывает файл с определенным именем, в котором содержится $EDITOR (или $SVN_EDITOR) - это может потребовать некоторой работы с вашей стороны; определение параметров для каждого поддерживаемого редактора. В любом случае у вас есть имя файла, который был сохранен (или код ошибки приложения в случае сбоя), и вы можете просто использовать его.

...