何かが起こったので、これ以上ハイライトが見えなくなりました。私はもう試した:
- 別の端末を使用します。
-g
オプションを使用-G
そこにないことを確認する- ^ K検索中
- ESC-U
何も役に立たない。
私は、i3デスクトップ上のUbuntu 12.10で作業しています。$TERM=screen-256
。TTY1^ ALT 1
に切り替えて使用すると、manパラメーターと検索パターンの両方が強調表示されていることがわかります。man man
それを修正するために他に何ができますか?
何かが起こったので、これ以上ハイライトが見えなくなりました。私はもう試した:
-g
オプションを使用-G
そこにないことを確認する何も役に立たない。
私は、i3デスクトップ上のUbuntu 12.10で作業しています。$TERM=screen-256
。TTY1^ ALT 1
に切り替えて使用すると、manパラメーターと検索パターンの両方が強調表示されていることがわかります。man man
それを修正するために他に何ができますか?
回答:
TTY1の強調表示は、TERM変数を適切な値に設定するため機能します。
TERM変数を適切な値(たとえば、screenまたはscreen-256color)に変更します。個人の〜/ .screenrcまたはシステム全体の/ etc / screenrcを確認し、対応する行を修正します。
lessの私のバージョンでは、値screen-256は実際にはエラーになります:
WARNING: terminal is not fully functional
- (press RETURN)
画面には、*画面だけで正しく解釈されます。
TERMの正しい値はターミナルエミュレータに依存し、通常はそれによって設定されます。Ubuntuの3つのプリインストールされたターミナルエミュレータのデフォルトはxtermです。
実行する
grep -R TERM= ~/.* /etc 2> /dev/null
シェルの設定ファイルでTERMの値が上書きされるかどうかのチェック。
まあこれは迷惑です。ここで何が起こっていますか?(tmux
下にiTerm.app
)
$ echo test > test ; echo $TERM
screen
そして、いくつかの録音で
$ script withscreen
Script started, output file is withscreen
$ less -p test test
... q to quit and then exit the shell session ...
$ script withxterm
Script started, output file is withxterm
$ TERM=xterm less -p test test
... q and exit again ...
そして今、私たちは使用されているコードを見ます
$ grep test withscreen | hexdump -C
00000000 24 20 6c 65 73 73 20 2d 70 20 74 65 73 74 20 74 |$ less -p test t|
00000010 65 73 74 0d 0d 0a 1b 5b 33 6d 74 65 73 74 1b 5b |est....[3mtest.[|
00000020 32 33 6d 0d 0a 1b 5b 35 3b 31 48 1b 5b 33 6d 74 |23m...[5;1H.[3mt|
00000030 65 73 74 1b 5b 32 33 6d 0d 0a 1b 5b 33 38 3b 31 |est.[23m...[38;1|
00000040 48 1b 5b 33 6d 74 65 73 74 20 28 45 4e 44 29 1b |H.[3mtest (END).|
00000050 5b 32 33 6d 1b 5b 4b 0d 1b 5b 4b 1b 5b 3f 31 6c |[23m.[K..[K.[?1l|
00000060 1b 3e 24 20 5e 44 0d 0d 0a |.>$ ^D...|
00000069
$ grep test withxterm | hexdump -C
00000000 24 20 54 45 52 4d 3d 78 74 65 72 6d 20 6c 65 73 |$ TERM=xterm les|
00000010 73 20 2d 70 20 74 65 73 74 20 74 65 73 74 0d 0d |s -p test test..|
00000020 0a 1b 5b 37 6d 74 65 73 74 1b 5b 32 37 6d 0d 0a |..[7mtest.[27m..|
00000030 1b 5b 35 3b 31 48 1b 5b 37 6d 74 65 73 74 1b 5b |.[5;1H.[7mtest.[|
00000040 32 37 6d 0d 0a 1b 5b 33 38 3b 31 48 1b 5b 37 6d |27m...[38;1H.[7m|
00000050 74 65 73 74 20 28 45 4e 44 29 1b 5b 32 37 6d 1b |test (END).[27m.|
00000060 5b 4b 0d 1b 5b 4b 1b 5b 3f 31 6c 1b 3e 24 20 65 |[K..[K.[?1l.>$ e|
00000070 78 69 74 0d 0d 0a |xit...|
00000076
$
1b 5b ...
コードは、参照することにより、より明瞭にすることができるxtermの制御配列ドキュメントを、または1つは下を参照する配列を用いて手動周りいじることができTERM=xterm
強調を引き起こしています
$ printf "\033[7mtest\033[27m\n"
test
そのTERM=screen
場合は逆だコントロール配列のドキュメントごとに、行いません。
ESC [
Control Sequence Introducer (CSI is 0x9b).
...
CSI Pm m Character Attributes (SGR).
...
Ps = 7 -> Inverse.
...
Ps = 2 7 -> Positive (not inverse).
そのドキュメントの近くで、screen
端末\033[3m
がイタリック体であり、\033[23m
Notません。
この発見はいくつかのオプションを提供します。イタリック体のテキストを表示するように端末を構成するか、代わりにscreen
端末にイタリック体の代わりに逆コードを使用ます。(less(1)
ドキュメントを掘り下げると、「イタリック体の代わりにインバースを使用する」ノブが表示されませんでした。)(また、一部の端末は、XからYへの変換をサポートします。詳細については、端末のドキュメントを確認してください。)別の端末エミュレータを試してみて、それが何をするのかを見てください...)
うわー斜体テキストです醜いです。代わりに、screen
使用するコードを逆に変更してみましょう。これには明らかにterminfo
(または場合によってはtermcap
)データベースが含まinfocmp(1)
れます。tic(1)
$ TERM=screen infocmp > ti.screen ; TERM=xterm infocmp > ti.xterm
$ fgrep '\E[7' ti.xterm
rc=\E8, rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM,
smir=\E[4h, smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m,
$ fgrep rev= ti.screen
nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
$ fgrep '\E[3m' ti.screen
smso=\E[3m, smul=\E[4m, tbc=\E[3g,
$
私が推測すると思いますのでsmso
ことを考えると使用されているxterm
用途\E[7m
とscreen
\E[3m
、これによるterminfo(5)
と「スタンドアウトモード」であり、逆とペアになっていますrmso
。それらをxterm
使用するものに変更しましょう...
$ TERM=screen infocmp | sed -e 's/smso=[^,]*/smso=\\E[7m/;s/rmso=[^,]*/rmso=\\E[27m/' > foo
$ tic -o ~/.terminfo foo
$ rm foo
おいしそうになりました(ただし、すべてのホストでファイルを作成するscreen
必要がありterminfo
ます...)