如何禁用引号的自动转义 - BASH

如何禁用引号的自动转义 - BASH

我的 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)。

相关内容