web-dev-qa-db-ja.com

デフォルトの端末内テキストエディターのコマンド

vimまたはnanoを含む指示がよく見られます。これは、選択したテキストエディターでそのステップでファイルを開くことを意味します。 vimnanoなど、ユーザーのデフォルトのターミナル内テキストエディターで入力を開く特定のプログラムの代わりに使用できる不可知論的なコマンドはありますか?

同様の質問のサイドバーにeditorと記載されていますが、これはまだDebianベースのディストリビューションに限定されていますか?そして、代替手段はありますか?

2
Wolf

定義されていれば、$EDITORを使用できます。

$EDITOR filename.txt

しかし、ほとんどのドキュメントはnanoを使用していると思います。誰かが盲目的にフォローしている場合は、安全に使用できるからです。ユーザーが1つのエディターを別のエディターよりも実際に好むと判断した場合、ユーザーはそれをvimemacsなどに置き換えるだけで十分です。

editはDebianベースのシステムではうまく機能するかもしれませんが、他のシステムではexを呼び出すため、これはお勧めできません。

3
jsw85

環境変数VISUALが設定されている場合は、それを使用します。

それ以外の場合、環境変数EDITORが設定されていれば、それを使用します。

それ以外の場合、Unixの伝統はデフォルトでviです。これはまったくユーザーフレンドリーではありません。viを使用するユーザーは、システムを起動するように設定する方法を知っているため、アプリケーションは、ユーザーフレンドリーではないはずです。残念ながら、まともな編集者を見つけるための優れたポータブルな方法はありません。 xdg-mime query default を試すこともできますが、ユーティリティが利用できる場合でも、常に機能するとは限りません。 DebianおよびDebianライクなシステムで、 sensible-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および$EDITORで空白分割を行いますが、すべてではありません。

すべてのLinuxディストリビューションのデフォルトのターミナル言語であるBashを使用している場合(私の知る限り)、環境変数と呼ばれるものがあります。これらの変数の多くはディストリビューションによってセットアップされ、一部は手動で設定または「エクスポート」する必要があります。 $ EDITORは特に1つです(大文字とドル記号が必要です)。ドル記号は呼び出される変数を示し、キャップはその環境変数を示します。 $ HOMEは一般的な環境です。 〜で省略された変数。

したがって、質問に簡潔に答えるために、ユーザーのデフォルトエディター編集file.txtを使用するために実行するコマンド

$EDITOR file.txt

デフォルトのエディターをvimに設定またはエクスポートするには、これをユーザーの$ HOME/.bashrcファイルに配置します。

export EDITOR=/bin/vim

次に実行します:

source $HOME/.bashrc

$ EDITOR変数が設定されていない場合、実際にはデフォルトのエディターはありません。

代替案に関する限り、エイリアスによる無限の数があります。

Alias E="$EDITOR"

.bashrcファイルを取得した後、これにより、上記の最初のコマンドを次のように実行できます。

E text.vim

ただし、より高度なbashの使用を妨げる可能性があるため、エイリアスに夢中にならないでください。


もう1つの便利で類似した環境変数は$ PAGERです。これは、ドキュメントを表示するための既定のプログラムを開くために使用できます。

$PAGER file.txt

この環境変数の通常のデフォルトは「少ない」です。

0
Dave