我有scoured the internet来进行解释,但是t_ts
和t_fs
的神秘性使得无法找到有关我如何做的有用信息可以期望系统正常工作。
这里是我现有知识的概述,如果有人明智地填写了最后几个点,我将非常乐意...
我在这里的某个地方“开始”:http://tldp.org/HOWTO/Xterm-Title-3.html
我验证了如何在bash shell中运行此命令(其中^[
由 Ctrl + V , Esc 生成):
printf "^[]0;testTITLEzzz"
这有效。它可以在原始终端上设置标题,还可以在tmux中为窗格设置标题。
注意!我不需要使用结尾的"\007"
字符。
在我的.vimrc
内,当我使用set title
并设置titlestring
时,它总是正确地正确设置了原始终端标题,但未能设置tmux窗格标题。>
但是,一旦设置好(与^[
相同,它就是原始的ESC字符):
if &term == "tmux-256color-italic"
set t_ts=^[]0;
set t_fs=
endif
它开始用于设置tmux窗格标题。我很高兴
现在,我所遇到的麻烦是如何将这种程序性知识转化为我将来可以使用的实践性知识。
问题1
我在vim中查找了帮助,得到了:
t_ts set window title start (to status line) t_ts 't_ts'
t_fs set window title end (from status line) t_fs 't_fs'
我不知道“状态栏”在这里是什么意思。
问题2
我想知道vim中记录的这些终端输出代码如何对应于xterm世界的其余部分,或者我应该称之为的任何东西。
例如,我可以查询infocmp
以获得当前的终端配置和xterm
终端配置的值:
$ infocmp xterm
# Reconstructed via infocmp from file: /lib/terminfo/x/xterm
xterm|xterm-debian|X11 terminal emulator,am,bce,km,mc5i,mir,msgr,npc,xenl,colors#8,cols#80,it#8,lines#24,pairs#64,acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,bel=^G,blink=\E[5m,bold=\E[1m,cbt=\E[Z,civis=\E[?25l,clear=\E[H\E[2J,cnorm=\E[?12l\E[?25h,cr=\r,csr=\E[%i%p1%d;%p2%dr,cub=\E[%p1%dD,cub1=^H,cud=\E[%p1%dB,cud1=\n,cuf=\E[%p1%dC,cuf1=\E[C,cup=\E[%i%p1%d;%p2%dH,cuu=\E[%p1%dA,cuu1=\E[A,cvvis=\E[?12;25h,dch=\E[%p1%dP,dch1=\E[P,dim=\E[2m,dl=\E[%p1%dM,dl1=\E[M,ech=\E[%p1%dX,ed=\E[J,el=\E[K,el1=\E[1K,flash=\E[?5h$<100/>\E[?5l,home=\E[H,hpa=\E[%i%p1%dG,ht=^I,hts=\EH,ich=\E[%p1%d@,il=\E[%p1%dL,il1=\E[L,ind=\n,indn=\E[%p1%dS,invis=\E[8m,is2=\E[!p\E[?3;4l\E[4l\E>,kDC=\E[3;2~,kEND=\E[1;2F,kHOM=\E[1;2H,kIC=\E[2;2~,kLFT=\E[1;2D,knxt=\E[6;2~,kPRV=\E[5;2~,kRIT=\E[1;2C,kb2=\EOE,kbs=^?,kcbt=\E[Z,kcub1=\EOD,kcud1=\EOB,kcuf1=\EOC,kcuu1=\EOA,kdch1=\E[3~,kend=\EOF,kent=\EOM,kf1=\EOP,kf10=\E[21~,kf11=\E[23~,kf12=\E[24~,kf13=\E[1;2P,kf14=\E[1;2Q,kf15=\E[1;2R,kf16=\E[1;2S,kf17=\E[15;2~,kf18=\E[17;2~,kf19=\E[18;2~,kf2=\EOQ,kf20=\E[19;2~,kf21=\E[20;2~,kf22=\E[21;2~,kf23=\E[23;2~,kf24=\E[24;2~,kf25=\E[1;5P,kf26=\E[1;5Q,kf27=\E[1;5R,kf28=\E[1;5S,kf29=\E[15;5~,kf3=\EOR,kf30=\E[17;5~,kf31=\E[18;5~,kf32=\E[19;5~,kf33=\E[20;5~,kf34=\E[21;5~,kf35=\E[23;5~,kf36=\E[24;5~,kf37=\E[1;6P,kf38=\E[1;6Q,kf39=\E[1;6R,kf4=\EOS,kf40=\E[1;6S,kf41=\E[15;6~,kf42=\E[17;6~,kf43=\E[18;6~,kf44=\E[19;6~,kf45=\E[20;6~,kf46=\E[21;6~,kf47=\E[23;6~,kf48=\E[24;6~,kf49=\E[1;3P,kf5=\E[15~,kf50=\E[1;3Q,kf51=\E[1;3R,kf52=\E[1;3S,kf53=\E[15;3~,kf54=\E[17;3~,kf55=\E[18;3~,kf56=\E[19;3~,kf57=\E[20;3~,kf58=\E[21;3~,kf59=\E[23;3~,kf6=\E[17~,kf60=\E[24;3~,kf61=\E[1;4P,kf62=\E[1;4Q,kf63=\E[1;4R,kf7=\E[18~,kf8=\E[19~,kf9=\E[20~,khome=\EOH,kich1=\E[2~,kind=\E[1;2B,kmous=\E[M,knp=\E[6~,kpp=\E[5~,kri=\E[1;2A,mc0=\E[i,mc4=\E[4i,mc5=\E[5i,meml=\El,memu=\Em,op=\E[39;49m,rc=\E8,rep=%p1%c\E[%p2%{1}%-%db,rev=\E[7m,ri=\EM,rin=\E[%p1%dT,ritm=\E[23m,rmacs=\E(B,rmam=\E[?7l,rmcup=\E[?1049l\E[23;0;0t,rmir=\E[4l,rmkx=\E[?1l\E>,rmm=\E[?1034l,rmso=\E[27m,rmul=\E[24m,rs1=\Ec,rs2=\E[!p\E[?3;4l\E[4l\E>,sc=\E7,setab=\E[4%p1%dm,setaf=\E[3%p1%dm,setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,sgr0=\E(B\E[m,sitm=\E[3m,smacs=\E(0,smam=\E[?7h,smcup=\E[?1049h\E[22;0;0t,smir=\E[4h,smkx=\E[?1h\E=,smm=\E[?1034h,smso=\E[7m,smul=\E[4m,tbc=\E[3g,u6=\E[%i%d;%dR,u7=\E[6n,u8=\E[?%[;0123456789]c,u9=\E[c,vpa=\E[%i%p1%dd,
$ infocmp
# Reconstructed via infocmp from file: /home/slu/.terminfo/t/tmux-256color-italic
tmux-256color-italic|screen with 256 colors and italic,colors#0x100,pairs#0x7fff,acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,clear=\E[H\E[J,cnorm=\E[34h\E[?25h,cuu1=\EM,cvvis=\E[34l,enacs=\E(B\E)0,flash=\Eg,is2=\E)0,kend=\E[4~,khome=\E[1~,nel=\EE,rmacs=^O,rmcup=\E[?1049l,rs2=\Ec\E[?1000l\E[?25h,setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;m%?%p9%t\016%e\017%;,sgr0=\E[m\017,smacs=^N,smcup=\E[?1049h,
似乎没有任何内容与ts
或fs
保持一致。
在这一点上,我认为这2个字母的代码不会相互映射,这是我多年来一直怀疑的东西。
此外,由于我了解到通过发出<Esc>]0;
后跟字符串可以设置标题,因此通过测试,我发现无论$TERM
中指定的终端功能如何,该设置始终有效。这使我产生疑问:是否看着infocmp
并想知道此处指定的内容是否与我控制标题的能力有关。
尽管,说实话,我什至不了解$TERM
env var的意义,除了vim
和less
之类的程序,如果我没有{{ 1}}'da terminfo文件,对应于tic
的当前值。再说一次,只是程序上的知识,我正在寻找更深入和有意义的东西。
问题3
现在,我发现可以通过vim正确设置tmux窗格标题的配置组合,我想知道在我的$TERM
设置对原始终端有效之前,vim发送的是什么,但是不适用于tmux。我知道有一种方法可以欺骗vim,使我以交互方式运行它,同时将其所有输出通过管道传输到二进制文件中,然后以十六进制的方式搜索代码中的差异,但是我忘记了如何做到这一点,并且怀疑可以找到更轻松的方法。
问题4
我完全不知道应该为t_ts
设置什么(如果有的话),这也触及了为什么不需要t_fs
BEL字符来终止标题序列的问题。为什么没有必要,我期望终止该序列吗?换行符?