プロンプトと以前の出力をシェル/タームモードで編集できないようにする方法はありますか?


9

これは明らかに表面的な質問です。

けれどもansi-term、私はそれを最初に開いたときに正しく動作して開始し、それは私がないとき、例えば、いくつかのコマンドの後に「編集可能」モードに分解すると思われるC-a(行の先頭)が続くC-k(キルライン)、それは全体のプロンプト一掃します。

私の美的健全性のために、プロンプトと以前の出力を(のshell)編集不可にする方法はありますか?(意味のある違いを考慮して、ansi-termを除外するように更新されました。)

私はEmacs 24.4でzshを使用しています。OSは、Virtual Boxを介したLXDE(Ubuntu 14.04)です。

(理想的には、引き続きカーソルを移動できます...)


1
たまたま「おかしな」OSを使っていますか?通常、シェルモードでは、Ca はプロンプトの後にコマンドラインの先頭にジャンプし、先頭にジャンプするには2番目のCaが必要です。WindowsとSolaris(以前の人生)では、Caは最初から、MacOSやLinuxなどでは期待通りに動作することがわかりました。
Mark Aufflick 2014年

@Mark A:元の投稿を更新して、現在のセットアップを含め、いくつかの詳細を追加しました。
アイスマン2014年

説明されたansi-termの動作は、奇妙なデフォルトまたはによってラインモードに切り替えたように聞こえますC-c C-j。そのデフォルトを見つけるか、でcharモードに切り替えてみてくださいC-c C-k
wasamasa 2014年

1
以来shell-mode/ term-modeそれぞれ/から派生していないんcomint-modeあなたはここで、同時に2つの非常に異なる質問をしています、。これを2つの別々の質問に分割することを考えていますか?
purple_arrows 2014年

回答:


16

comint由来のモード(のようにshellielmサポートフィルタ機能...、)、次のスニペットは、出力およびプロンプト読み取り専用になります:

(setq comint-prompt-read-only t)

(defun my-comint-preoutput-turn-buffer-read-only (text)
  (propertize text 'read-only t))

(add-hook 'comint-preoutput-filter-functions 'my-comint-preoutput-turn-buffer-read-only)

ansi-term(から派生されていないのcomint)、それは2つの動作モード、特徴char modeシェルのバインディングとできるだけそれに動作しているソフトウェアの真実ととして滞在line modeされ、あなたがあなたのように、バッファを編集することができますしてくださいを。コマンド出力を編集するには、通常char mode(にバインドC-c C-k)にとどまり、時々line mode(にバインドC-c C-j)に切り替える必要があります。


これは本当にきれいでしたが、動作を停止しました…:(かなり多くのコードを必要とする動作中のソリューションがあります→ github.com/michalrus/dotfiles/commit/…
Michal Rus

Dunno、まだ25.2で働いています。
ワサマサ2017

ある意味で、このテキストを削除することはできませんが、その不変のテキストと新しいインターリーブを挿入できます。
Michal Rus

1
そうですね、具体的にはテストしていません。
wasamasa 2017

おっと、探している人のためのもう1つの変更。以前に抜け穴をいくつか見逃しました。これは私には完璧に動作します。github.com/michalrus/dotfiles/blob/...
ミハル・ルーシ

2

と混合termするshell-modeと、変数がcomint-use-prompt-regexp時々設定されるようです。これにより、あなたが説明したような動作が少し発生します。シェルモードで C-aは、行の先頭に移動し、C-kプロンプトを含む行全体を強制終了します。

簡単な修正は、でリセットcomint-use-prompt-regexpしてC-: (setq comint-use-prompt-regexp nil)、シェルモードでカーソル移動キーが認識しているテキストプロパティを強制的に使用することです。

これがどのように機能するかについての説明は、GNU Emacsのマニュアルにあります:https : //www.gnu.org/software/emacs/manual/html_node/emacs/Shell-Prompts.html


1

変数comint-prompt-read-onlyをにカスタマイズしてみてくださいt

これは、shell-modeおよびに由来する他のものに影響しますが、影響はありcomint-modeませんterm-mode

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.