我的 bash 文件中有这个测试代码:
gtest() {
echo 'hello'
}
bind '"\C-g\C-x": "$(gtest)\e\C-e"'
当我开始输入类似的内容vim "
,然后按时C-g C-x,我得到的vim hello
是 而不是vim "hello
。
如果我输入vim """sometext
然后按下C-g C-x,我会得到vim sometexthello
而不是vim """sometexthello
。
有没有办法保留引号?
答案1
bind '"\C-g\C-x": "\C-u$(gtest)\e\C-e\C-a\C-y\C-e"'
问题在于\e\C-e
评估该行。它适合执行$(gtest)
,但显然会弄乱"
字符。
诀窍是使用 保存行C-u
,仅评估$(gtest)
,将光标放在开头 ( C-a
),恢复已保存的行 ( C-y
) 并最后将光标放在末尾 ( C-e
)。