如何找到终端定义的文档/知识/指导/古代书籍? (让vim终端标题设置可以与tmux一起使用) 问题1 问题2 问题3 问题4

我有scoured the internet来进行解释,但是t_tst_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,

似乎没有任何内容与tsfs保持一致。

在这一点上,我认为这2个字母的代码不会相互映射,这是我多年来一直怀疑的东西。

此外,由于我了解到通过发出<Esc>]0;后跟字符串可以设置标题,因此通过测试,我发现无论$TERM中指定的终端功能如何,该设置始终有效。这使我产生疑问:是否看着infocmp并想知道此处指定的内容是否与我控制标题的能力有关。

尽管,说实话,我什至不了解$TERM env var的意义,除了vimless之类的程序,如果我没有{{ 1}}'da terminfo文件,对应于tic的当前值。再说一次,只是程序上的知识,我正在寻找更深入和有意义的东西。

问题3

现在,我发现可以通过vim正确设置tmux窗格标题的配置组合,我想知道在我的$TERM设置对原始终端有效之前,vim发送的是什么,但是不适用于tmux。我知道有一种方法可以欺骗vim,使我以交互方式运行它,同时将其所有输出通过管道传输到二进制文件中,然后以十六进制的方式搜索代码中的差异,但是我忘记了如何做到这一点,并且怀疑可以找到更轻松的方法。

问题4

我完全不知道应该为t_ts设置什么(如果有的话),这也触及了为什么不需要t_fs BEL字符来终止标题序列的问题。为什么没有必要,我期望终止该序列吗?换行符?

wangkewei5724146 回答:如何找到终端定义的文档/知识/指导/古代书籍? (让vim终端标题设置可以与tmux一起使用) 问题1 问题2 问题3 问题4

您肯定需要结尾的\ 007(或\ 033 \\),否则某些终端将停止响应,以等待序列结束。您在tmux中尝试过此方法吗? tmux具有超时功能以防止窗格挂起,但其他大多数终端都没有。如果您在不带\ 007的xterm中尝试,它将挂起。

有关标题设置序列本身的信息,请查看https://invisible-island.net/xterm/ctlseqs/ctlseqs.html(标题设置为OSC 0和2-在“操作系统命令”下查看)。

ts和fs是termcap名称(terminfo是tsl / fsl),意思是“到状态行”和“从状态行”(顾名思义,infocmp向您显示terminfo,而不是termcap)。从硬件终端具有单独的状态行的日子开始,这有些历史性,但近年来有时被重用于X终端名称。查看terminfo(5)中的“状态线”部分,以了解有关状态线功能的一些信息。实际上,通常不提供或使用tsl和fsl,而是大多数应用程序查看XT功能(“ xterm标题”)来确定它们是否应使用OSC序列。 XT是一种扩展功能-您需要使用“ infocmp -x”才能看到它。

您始终可以使用OSC序列在tmux中设置标题,默认情况下,标题(#{pane_title}格式)以引号形式显示在右状态。除非打开set-titles选项,否则tmux不会同时设置外部终端标题(终端tmux正在运行)。 set-titles-string选项控制标题tmux集的格式(默认情况下,它包括活动窗格的标题和其他信息)。仅当tmux外部的TERM指定包含XT或tsl / fsl(xterm具有XT)的条目时,set-titles才起作用。

我不知道如何配置vim来设置标题,但是好像您在t_ts和t_fs的正确轨道上-好像vim正在使用tsl / fsl但使用termcap名称(可能是a来自vi的遗产,它是在terminfo出现之前就已经开始的。)

我可以简要介绍一下它的工作原理:

  • termcap最初写于70年代,以允许vi在不同的(硬件)终端上运行;

  • terminfo是80年代的替代产品,用于解决termcap的许多问题和限制;

  • 仍然在软件和硬件终端中都使用(更常见的是terminfo);

  • 它们都以类似的方式工作-有一个命名条目的数据库(例如“ xterm”或“ tmux-256color”),它们提供了终端的一组命名功能;一些功能是标志(例如“ XT”)或数字(例如“颜色”),但是大多数是字符串,这些字符串指定应用程序应发送到终端以使事情发生的顺序(例如“ cuu1”使光标向上移动一行) vt100兼容终端上的“ \ 033 [A”);

  • termcap的大多数两个字符名称都很短,terminfo往往更长; termcap对数据库条目的长度限制为1024个字节,因此它经常缺少terminfo具有的许多功能;

  • TERM设置为应用程序应在数据库中查找的termcap或terminfo条目的名称;

  • terminfo数据库作为ncurses的一部分进行维护和运输(ncurses是一个用于绘制到终端的库,许多终端应用程序都使用该库); termcap数据库是使用tic从terminfo生成的。

将所有信息放在一起实际上并不是一个单一的来源。对于转义序列,https://vt100.net/有很多用于旧硬件终端的手册(但是,其中很多现在是无关紧要的),而我上面为xterm提供的链接介绍了xterm和大多数其他现代终端仿真器支持的转义序列其中的一个子集(几乎所有仍在使用中的终端都是vt100兼容的,而xterm是事实上的标准终端)。 ncurses有一些手册:terminfo(5)和termcap(5)。奥赖利(O'Reilly)有一本书叫做“ termcap and terminfo”,该书也涵盖了很多内容,但是它写于80年代后期,所以其中有些已经过时了。

本文链接:https://www.f2er.com/3134631.html

大家都在问