想像する
- 私は複数行のプロンプトを使用するのが好きです。
set prompt="${bold}${green}%M${white}:${red}%c5${unbold} \n${white}% "
- 私はしばしばWindowsの電子メールにターミナル行をコピー/貼り付けます。
質問
tcshは端末に実際の改行文字を印刷しないようです。改行を生成するのに十分な空白文字を印刷するようです。これにより、Windowsの電子メールに貼り付けると、プロンプトの2cd行が新しい行に配置されなくなります。代わりに、私は多くの空白文字を取得します。
私は次のXresourceを持っています:
xterm*trimSelection: true
xterm*highlightSelection: true
この種のキャッチを使用すると、何が間違っているかを簡単に確認できます。 ls出力に改行文字がどのように表示されるかを確認してください。しかし、プロンプトの最初の行は実際に改行を引き起こすのに十分なスペースですが、改行文字ではありません。また、3回クリック(行)を選択すると、「複数行」プロンプトが実際には空白を含む1行であることが明らかになりました。
tcshフォーキング/再コンパイルがありません。この問題を解決する方法を知っている人はいますか?
ありがとうございます!
——マイヤーズ
ベストアンサー1
tl;dr これを~/.tcshrc
またはに追加します~/.cshrc
。
settc am no
その結果、意図しない不快な結果の1つは、複数行で囲まれた長いコマンドが選択時に改行文字を挿入することです。どちらが悪いかを判断するのはユーザーの役割です。
tcsh
実行してみると、script(1)
正確に何をしているのかがわかります。
$ script -qc tcsh
tcsh% set prompt = "foo\nbar% "
foo
bar% exit
exit
$ cat -v typescript
...
foo^[[80G ^Mbar% exit^M^M
tcsh
最後の列に移動するために、プロンプト内の改行を変換します(hpa
/ch
\e[80G
エスケープを介して)。その後に2つのスペースとキャリッジリターンが続きます(tcsh
これだけが可能です。実際の列はcsh
そうではありません)。MoveToLine()
その機能をご覧ください。ソースコード。
何らかの理由で、他の端末エミュレータは、設定に関係なく、xterm
行全体が空白で埋められたかのように最後の列に移動すると解釈します。highlightSelection
迅速で汚れた修正は、tcsh
端末に自動マージンがないと信じるようにすることです。これがsettc am no
まさにこのコマンドが行うことです。