[20150427]tmux与INPUTRC定义冲突.txt

[20150427]tmux与INPUTRC定义冲突.txt

--我前一阵子发现在tmux里面一些按键与INPUTRC冲突.

我的/etc/inputrc定义如下:

"\e[1~": beginning-of-line    # home
"\e[2~": yank-last-arg        # insert
"\e[3~": delete-char          # delete
"\e[4~": end-of-line          # end
"\e[5~": backward-kill-word   # page up
"\e[6~": kill-word            # page down

#set bell-style visible
set bell-style none
set meta-flag On
set convert-meta Off
set input-meta on
set output-meta On
set horizontal-scroll-mode On
set show-all-if-ambiguous On

# (F1 .. F5) are "\e[[A" ... "\e[[E"
#"\e[[B":  "select * from v$system_event ;"  # F2

"\e[[A": backward-word                     # F1
"\e[[B": forward-word                      # F2

"\e[[C": backward-kill-line                # F3
"\e[[D": kill-line                         # F4

"\e[[E": yank                              # F5
"\e[17~": undo                              # F6

"\e[18~": history-search-forward            # F7
"\e[19~": history-search-backward           # F8

"\e[20~": character-search                  # F9
"\e[21~": character-search-backward         # F10

"\e[23~": "\eb'\ef'"                        # F11
"\e[24~": kill-whole-line                   # F12

"\e[5C": forward-word
"\e[5D": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word

--不过我发现在tmux下无法使用F1,F2,F3,F4.

--进入tmux后执行:
#  infocmp
#       Reconstructed via infocmp from file: /usr/share/terminfo/s/screen
screen|VT 100/ANSI X3.64 virtual terminal,
        am, km, mir, msgr, xenl,
        colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
        acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
        clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M,
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
        cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
        cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
        dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
        flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
        il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcbt=\E[Z,
        kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
        kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
        kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
        khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
        nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
        rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m,
        rmul=\E[24m, rs2=\Ec\E[?1000l\E[?25h, sc=\E7,
        setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
        sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m, smacs=^N, smcup=\E[?1049h, smir=\E[4h,
        smkx=\E[?1h\E=, smso=\E[3m, smul=\E[4m, tbc=\E[3g,

--才发现进入TERM不再是linux,而是变成了screen.这样一些按键的定义被重新修改.
--对比发现:
#  infocmp  screen linux | grep kf[123456]:
        kf1: '\EOP', '\E[[A'.
        kf2: '\EOQ', '\E[[B'.
        kf3: '\EOR', '\E[[C'.
        kf4: '\EOS', '\E[[D'.
        kf5: '\E[15~', '\E[[E'.

--可以发现F1,F2,F3,F4,F5的定义与原来不一致,这样导致无法使用.为此我建立新的inputrc文件.内容如下:
# cat /etc/tmux.inputrc
"\e[1~": beginning-of-line    # home
"\e[2~": yank-last-arg        # insert
"\e[3~": delete-char          # delete
"\e[4~": end-of-line          # end
"\e[5~": backward-kill-word   # page up
"\e[6~": kill-word            # page down

#set bell-style visible
set bell-style none
set meta-flag On
set convert-meta Off
set input-meta on
set output-meta On
set horizontal-scroll-mode On
set show-all-if-ambiguous On

# (F1 .. F5) are "\e[[A" ... "\e[[E"
#"\e[[B":  "select * from v$system_event ;"  # F2

"\eOP": backward-word                     # F1
"\eOQ": forward-word                      # F2

"\eOR": backward-kill-line                # F3
"\eOS": kill-line                         # F4

"\e[15~": yank                              # F5
"\e[17~": undo                              # F6

"\e[18~": history-search-forward            # F7
"\e[19~": history-search-backward           # F8

"\e[20~": character-search                  # F9
"\e[21~": character-search-backward         # F10

"\e[23~": "\eb'\ef'"                        # F11
"\e[24~": kill-whole-line                   # F12

--如何显示进入tmux是指定INPUTRC=/etc/tmux.inputrc呢? 很简单,修改.bashrc文件加入如下:

if [[ '' = "$TMUX" ]]
then
    export INPUTRC=/etc/inputrc
else
    export INPUTRC=/etc/tmux.inputrc
fi

--这样就可以正常实现功能键在两种模式下正常使用了.

时间: 2024-10-23 20:04:22

[20150427]tmux与INPUTRC定义冲突.txt的相关文章

文件重定义冲突的分析与解决

引言 有时候看到论坛上有人问编译时重定义现象的问题.这个问题与头文件包含冲突有关,改一改相关头文件包含就会让问题消失.我在这里要以 <windows.h> <winsock.h> <winsock2.h>这3个头文件为例分析为什么会产生这种原因:然后给出一种不会产生冲突的做法:最后就此例的分析给出结论.本文对于已经知道冲突原因的读者是多余的,但对于一时没有时间去解的人还是有一定的参考价值的. 一个重命名的例子 先写一个socket基本操作类: // SocketBase

[20160730]hint 冲突.txt

[20160730]hint 冲突.txt --昨天别人优化加提示无效,问我为什么无效?我一般认为这种情况称为hint 冲突. --通过例子来说明,我测试会使用ordered,我一般不喜欢使用ordered提示,通过例子来说明. 1.环境: SCOTT@test01p> @ ver1 PORT_STRING                    VERSION        BANNER                                                       

[20170214]在线重定义测试.txt

[20170214]在线重定义测试.txt --//以前测试过,重复测试,因为生产系统要做一次相同的操作. --//实际的原理利用物化事务.注例子好像来源于piner的<构建oracle高可用环境>,当时版本是9i,好像没有 --//dbms_redefinition.copy_table_dependents函数. 1.准备工作: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER

[20140807]hash_value sql_id冲突.txt

[20140807]hash_value sql_id冲突.txt --9i下使用v$sql仅仅有hash_value值,sql_id是到10g下才出现. --理论讲hash_values是sql_id的子集,发生冲突的可能性比使用sql_id,看了链接重复测试: http://externaltable.blogspot.com/2012/06/hash-collisions-sql-signatures-and.html SCOTT@test> @ver BANNER -----------

关于 WinSock2.h 与 WinSock.h 文件重定义冲突的 解决办法

事实上一直都用的是Winsock1的,还从来没有用过Winsock2,今天开始使用它,但是出现了一大堆的错误,都是那个C2011和C2375之类的错误.当时就想,是不是2和1发生了冲突了?但是我没有包含过1的头文件啊?! 后来一查,在Windows.h里面发现了这么一段代码: #ifndef _MAC#include <winperf.h>#include <winsock.h>#endif 我就一个倒.... 原来是这里包含了.... 对付这个的终极解决办法是: #define 

[20150425]tmux学习心得2.txt

[20150425]tmux学习心得2.txt --学习使用tmux有一段时间,本来不想在这个上面花太多时间的,自己还抽空看了2篇电子书籍: Apress.tmux.Taster.1484207769.pdf Pragmatic.tmux.Feb.2012.pdf -- 自己总结一下学习心得: 1.关于prefix key: --我前面提到我最终选择ctrl+a作为prefix key.实际上要避开冲突有一定难度. prefix key 的缺省定义是ctrl-b,实际上有一些修改成ctrl-a或

[20150429]使用scp问题.bashrc出现echo.txt

[20150429]使用scp问题.bashrc出现echo.txt --前几天我在调试tmux时,在.bashrc中加入了如下代码: if [[ '' = "$TMUX" ]] then     export INPUTRC=/etc/inputrc     echo Welcome to bash else     export INPUTRC=/etc/tmux.inputrc     echo Welcome to Tmux fi --这样在正常登陆时会显示: Welcome

搜索引擎robots.txt基础写法

首先,我们从其定义讲到其使用方法,方便广大seoer更加精准的使用rotbots.txt使用. 一.定义: robots.txt 是存放在站点根目录下的一个纯文本文件,让搜索蜘蛛读取的txt文件,文件名必须是小写的"robots.txt". 二.作用: 通过robots.txt可以控制搜索引擎收录内容,告诉蜘蛛哪些文件和目录可以收录,哪些不可以收录. 三.robots.txt 放置位置 robots.txt文件应该放置在网站根目录下.举例来说,当spider访问一个网站 (比如 htt

jQuery库与其他JS库冲突的解决办法(转)

现在的js库很多,而且各有所长.像我,就比较喜欢jQuery,但同时也会使用一下其他的js库,如YUI,DWR什么的.但是它们却时不时地相互闹些 小矛盾,真是让人头痛.究其原因,原来是它们的全局对象定义冲突了,特别是变量"$",几乎百分之百要在这中招.怎么办?呵呵,看我的! 重载$函数.使用jQuery.noConflict()就可以通过重载$函数,从而区分开跟其他js库的重叠部分.例子如下: Js代码  <script src="prototype.js"&