我的.inputrc中有这些行:
"(": "\C-v()\ei"
"[": "\C-v[]\ei"
"{": "\C-v{}\ei"
"\"": "\C-v\"\C-v\"\ei"
"\'": "\C-v\'\C-v\'\ei"
这会自动关闭终端中的引号和括号。但它在tmux会话中造成不便:当我将包含引号的文本发送到另一个窗格(vim)到另一个窗格(bash / python / R等)时,每个引用变成两个,非常烦人。
是否可以在(仅限于)tmux中禁用这些行?
答案 0 :(得分:1)
tmux设置TMUX环境变量,所以在.bashrc(或.profile或其他)中:
if [ '' = "$TMUX" ] ; then
echo not in TMUX
else
echo in TMUX
fi
您可以将INPUTRC设置为覆盖默认的.inputrc位置,这样您就可以拥有一个tmux和一个非tmux,并根据TMUX在.bashrc中导出合适的INPUTRC值。您甚至可以根据“公共”文件和“非tmux会话”文件为该会话编写合适的.inputrc(例如在/ tmp中)。
不幸的是tmux导出TMUX,因此从tmux会话启动的子shell将无论如何设置TMUX。还没找到方法。
答案 1 :(得分:1)
我最终在〜/ .bashrc中执行此操作:
if [[ '' = "$TMUX" ]]
then
set -o vi
bind -m vi-insert '"(" "\C-v()\ei"'
bind -m vi-insert '"[" "\C-v[]\ei"'
bind -m vi-insert '"{" "\C-v{}\ei"'
bind -m vi-insert '"\"" "\C-v\"\C-v\"\ei"'
bind -m vi-insert '"\047" "\C-v\047\C-v\047\ei"'
else
echo Welcome to Tmux!
fi
采用user3392484的建议,我发现这更好:
if [[ '' = "$TMUX" ]]
then
export INPUTRC=~/.inputrc
else
export INPUTRC=~/.tmux.inputrc
echo Welcome to Tmux!
fi