0

ここのEmacsn00bは、グラフィカルモードで少しいじってみましたが、これまでのところ、すばらしいと思います。ターミナルバージョンを試してみたかったのですが、特にシフト選択では、いくつかの厄介な動作の違いがあることがわかりました。

グラフィカルモードでは、シフト選択(つまり、Shiftキーを押しながらマークを設定)を矢印キー、コントロールキー(単語全体を選択)、または原点キーまたは終了キー(行全体/大部分を選択)と組み合わせることができます。 。

ターミナルモードでは、キーはそれ自体で正常に機能します(Shiftキーを押しながら矢印キー*で移動しながら地域を選択できます。C-左/右では、単語全体をジャンプでき、始点と終点で目的の場所に移動できます)。それらを組み合わせることができません(Shiftキーを押しながらC矢印キーを押しながら単語全体を選択したり、Shift-EndまたはShift-Originで行の残りの部分を選択したりすることはできません)。

また、解決策を探した後でM-バックスペースについて読んだものの、ウィンドウモードでは機能しているのに、コンソールではC-バックスペースが機能しない(つまり、単語全体が消去されない)ことがわかりました。

できる限り徹底的に検索しましたが、ターミナルバージョンをグラフィカルバージョンのように動作させる方法を見つけることができませんでした...多くの人がEmacsのシフト選択について質問しているようですが、まったく同じ問題を抱えている人はいません...できます誰かがそれらの行動の違いがどこから来るのか説明しますか?

前もって感謝します。

*ただし、Shiftキーを押しながら、(矢印キーを使用して)下に移動して行全体を選択すると、再度上に移動して選択を解除することはできません(「未定義」)。

[編集/]さて、これは明らかに、私の端末にはグラフィカルなEmacsと同じショートカットがないという事実から来ています。けっこうだ。ここにいくつかの解決策があります。

  • デフォルトのEmacsショートカットに慣れる
  • 私の.emacsをglobal-set-keyで埋めます。試し ましたが、意図したとおりに動作しません-_-
    (fset 'select-to-end
    [(kbd "C-<spc> <end>")])
    (global-set-key (kbd "S-<end>") 'select-to-end)
    
4

1 に答える 1

1

簡単な答えは、「さまざまなキーストロークを使用して満足している場合は、それが簡単かもしれません」です。個人的には、キーバインディングと構成について少し神経質になっているので、これを使用することはめったにありません。特に、emacsモードがバインディングをオーバーライドするのはイライラします。global-set-key(それが本当に「宇宙の誰もが私のキーバインドにスタンプを押す」ことを意味することをあなたがまだ発見したかどうかはわかりません。)

あなたの質問に対するより長い答えは、「チェーンに沿った誰かがあなたの制御文字を無視しているので、あなたはそれが誰であるかを理解し、それを修正し、そして繰り返す必要がある」です。ここで話しているキーバインディングについては、C-S-<arrows>これを確実に機能させることができます。のようなものが必要な場合\C-~は、はるかに困難な時間を過ごすことになります。(問題は、一部のバインディングがレガシー端末では意味をなさなかったため、基本的に非標準の制御コードのセットを使用してキーの組み合わせを送信し、各プログラムにそれを認識するように教える必要があります。これは通常、termcapが来る場所です。で、それは重要なイベントについてプログラムを教えるための共通言語だからです。)

私が通常行う手順は次のとおりです。

  • ターミナルから始めます。キーを使用\C-vしてから押すと、文字通りのキーストロークを挿入できます(少なくともbashでは)。まず、C-left、S-left、およびCS-leftでこれを実行します。3つの異なる制御コードを取得していることを確認します。
  • そうでない場合は、(1)readline設定、(2)ターミナルプログラム設定、または(3)termcap設定のいずれかを調査する必要があります。TERMであるためxterm、termcapは問題ないはずです。使用しているターミナルプログラムはわかりませんが、独自のキー構成になっている可能性があります。(たとえば、私はMacを使用し、通常は最初に立ち寄るiTerm2を使用します。)とにかくターミナルで時間を過ごす場合は、必ず時間をかけてreadlineマニュアルを読み.inputrc、少し。
  • このチェーンは短いです:次はemacsです。\C-qemacsで使用し\C-vて、bashで行うのと同じことを行う\C-h kか、デフォルトのバインディングが何であるかを調べるために使用できます。繰り返しになりますが、emacsが興味のある組み合わせに対して明確なキーイベントを認識していることを確認することから始めます。そうでない場合は、ディレクトリを調べterm/xterm.elsite-lisp好みに合わせて変更することから始めます。

tmuxまたはを使用している場合screen、彼らもこれに参加し、通常は飼いならすことができます。これらの問題を見つけるプロセスはbashと同じです。使用\C-vman tmuxて、追加のキーバインディングを取得する方法を理解してください。

于 2012-07-05T17:40:58.143 に答える