Editors

預設終端內文本編輯器的命令

  • December 15, 2020

我經常看到包含vimor的說明nano,意思是在您選擇的文本編輯器中的該步驟中打開文件。是否有一個不可知的命令可以代替特定程序來在使用者的預設終端文本編輯器中打開輸入,無論是vim,nano還是其他?

editor在類似問題邊欄中提到過——這仍然僅限於基於 Debian 的發行版嗎?還有其他選擇嗎?

您可以使用 $EDITOR,前提是它已被定義:

$EDITOR filename.txt

但我認為大多數文件都使用nano,因為如果有人盲目跟隨,使用它是一個安全的選擇。如果使用者已經決定他們實際上更喜歡一個編輯器而不是另一個,他們就會知道足夠用 , 等自己替換vimemacs

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

大多數程序在$VISUALand上進行空格分割$EDITOR,但不是全部。

引用自:https://unix.stackexchange.com/questions/316856