私が何をしたか、そしていつ状況が変わったか:

私が何をしたか、そしていつ状況が変わったか:

私は bash と emacs を学び始めたばかりで、デフォルトのエディターを vi から emacs に変更したいと考えていました。さまざまな stackexchange コミュニティで多くの優れた質問を調べましたが、解決方法がわからず、vを使用するときにコマンドを台無しにしてしまったようです (一時的なものであることを願っています)。現在、でファイルを読み込んでいるときlessに を押しても、vi (デフォルト) や emacs (私が望むもの) が開くのではなく、何も起こりません。つまり、私の知る限り のままで、テキストを編集することはできません。幸い、 を使用して終了することはできますし、他に動作しているものは見当たりません。vlesslessq

私が何をしたか、そしていつ状況が変わったか:

私は Mac OS X に付属のターミナル エミュレータを使用していますが、XQuartz はダウンロードしています。Homebrew Cask を使用して、emacs をインストールしました。

StackExchange の多くの質問では、 .bash_profile で設定できる$EDITORおよび$VISUAL変数についてわかりやすく説明されていました。私の MacBook には古いバージョンの emacs が既にインストールされているので、homebrew によってインストールされた現在のバージョンの emacs を使用するようにしました。

私はまだこのすべてを学び始めたばかりなので、すべてを設定する最善の方法を判断できませんでした。現在、私の .bash_profile には次のように設定されています。

# changing emacs from the default osX version to the version obtained from homebrew                 
alias emacs="/usr/local/Cellar/emacs/25.2/Emacs.app/Contents/MacOS/Emacs"
alias enw="emacs -nw"

# setting emacs as the editor in term instead of vi                                                
EDITOR="enw";export EDITOR
VISUAL="enw";export VISUAL

上記のコードを .bash_profile に追加した後、特に重要な変更はありませんでした (私が知る限り)。および変数が正しく変更されたechoことを確認しました。$EDITOR$VISUAL

lessファイルを読むために を使用すると、 と入力することはできますvが、ターミナルは、目的の emacs ではなく vi を使用してファイルを編集します。そこで、 と の定義方法を変更してみました$EDITOR。たとえば、の代わりに フラグを$VISUAL使用して、 のようにフルパスを使用します。また、引用符を削除してみました。これらのいずれも、私が知る限り何も変わりませんでした。alias emacs=...-nwenw

残念ながら、まだ始めたばかりで、取り組むべき具体的なタスクがないので、基本的なコマンドとファイルをいじっているだけなので、lessコマンドを使用しています。現在、ターミナルで変数を使用する他の方法に精通していません。そのため、私の問題が にのみ関係するのか、 の問題なのかは$EDITORわかりません。v$EDITOR

最終的に、これに関連するいくつかの質問を見て、追加することが推奨されていたので、その理由を本当に理解せずに試してみました。また、のコマンドALTERNATE_EDITOR="";export ALTERNATE_EDITORとの明らかな違いはありません。vless

さらに検索してみるとこれ質問ですが、これは私の当初の計画に最も近いように思えます (ただし、私が理解している限りでは、パイプ処理をしようとはしていませんでした。また、残念ながら「ページング」が何なのか理解していません)。そこで、$EDITOR="enw"に変更しました。これは、 でファイルを読み取っているときに何もしなくなった$EDITOR="env TERM=xterm-256color enw"ときとほぼ同じです。vless

$TERM最後のコード追加を行う前に、通常何が起きるかを確認しましたが、それはすでにxterm-256color私の環境では起きていました。これがコマンドを台無しにしたと言っているのではなく、単に、 中に vi の呼び出しが停止したvタイムラインの問題です。すべてを最初に試したコードに戻しましたが、それでもまだ機能しません。vlessv

(長くなってすみません、役に立つかもしれないのでプロセスを説明しようとしただけです!).bash_profileへの追加をコメントアウトすると、すべてが正常に戻ります。これは良いことだと思います。したがって、.bash_profileで使用していない限り、使用でき$EDITORます。ただし、vless$EDITOR$VISUAL欲しいこれらを変更したいのですが、これが私のジレンマです。これはおそらく些細な質問ですが、アドバイスやご意見をいただければ幸いです。

PS- この問題のトラブルシューティング中に に遭遇しました。emacsclientこのコマンドは使用できますが、 の代わりにそっちを使用する理由がわかりませんenw

答え1

エイリアスは、現在のシェル セッションでのみ「アクティブ」です。またはlessを介し​​てエイリアスを呼び出すことはできませ$EDITOR$VISUAL(シェル自体を除く他のプロセスも、おそらくエイリアスを呼び出すことはできません)。

代わりに、例えば次のVISUALように設定します

export VISUAL='/usr/local/Cellar/emacs/25.2/Emacs.app/Contents/MacOS/Emacs -nw'

または、自分でコンパイルするか、HomeBrew、MacPorts、Fink などを使用して、emacsからアクセスできる標準の場所にインストールし、 を使用するだけです。$PATHexport VISUAL='emacs -nw'

関連情報