Editors
預設終端內文本編輯器的命令
我經常看到包含
vim
or的說明nano
,意思是在您選擇的文本編輯器中的該步驟中打開文件。是否有一個不可知的命令可以代替特定程序來在使用者的預設終端文本編輯器中打開輸入,無論是vim
,nano
還是其他?我
editor
在類似問題邊欄中提到過——這仍然僅限於基於 Debian 的發行版嗎?還有其他選擇嗎?
您可以使用
$EDITOR
,前提是它已被定義:$EDITOR filename.txt
但我認為大多數文件都使用
nano
,因為如果有人盲目跟隨,使用它是一個安全的選擇。如果使用者已經決定他們實際上更喜歡一個編輯器而不是另一個,他們就會知道足夠用 , 等自己替換vim
它emacs
。
edit
可能在基於 Debian 的系統上執行良好,但在它呼叫的其他系統上,ex
不推薦這樣做。
如果設置了環境變數
VISUAL
,請使用它。否則,如果
EDITOR
設置了環境變數,請使用它。否則,Unix 傳統預設為
vi
. 這一點都不友好——使用 vi 的人知道如何設置他們的系統來呼叫它,你的應用程序應該對那些不友好的使用者友好。不幸的是,沒有好的、便攜的方法可以找到一個像樣的編輯器。您可以嘗試xdg-mime query default
,但即使該實用程序可用,它也並不總是有效。在 Debian 和類 Debian 系統上,invokesensible-editor
會為您完成所有這些工作——但我不知道在其他 Unix 變體上有類似的東西。這會產生類似的程式碼
#!/bin/sh if [ -n "$VISUAL" ]; then exec $VISUAL "$@" elif [ -n "$EDITOR" ]; then exec $EDITOR "$@" elif type sensible-editor >/dev/null 2>/dev/null; then exec sensible-editor "$@" elif cmd=$(xdg-mime query default ) 2>/dev/null; [ -n "$cmd" ]; then exec "$cmd" "$@" else editors='nano joe vi' if [ -n "$DISPLAY" ]; then editors="gedit kate $editors" fi for x in $editors; do if type "$x" >/dev/null 2>/dev/null; then exec "$x" "$@" fi done fi
大多數程序在
$VISUAL
and上進行空格分割$EDITOR
,但不是全部。