我目前使用的是 LTS 版 ubuntu,但我又一次发现有些不对劲。目前,默认安装中的 CTRL+[left/right] 不会逐字跳转。有点奇怪,如果我没记错的话,我认为 10 年前我在默认的 freebsd 中就可以正常使用它。无论如何,似乎默认的左右键在默认情况下也无法正常工作!如果我输入:
pxd[LEFT][LEFT][DEL]w[ENTER]
然后我得到了pwd
,显然(希望如此?)我现在注意到的是,它在普通的 c++ cmd 行应用程序中不起作用。以下是示例代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin, s);
cout << "\n\n{\n" << s << "\n}" << endl;
}
现在编译并运行它:g++ test.cpp -o test && ./test
然后输入与 bash 相同的按键序列pwd
。突然它就不起作用了。我得到了这样的混乱:p[3~w
所有 *nixes 中的终端有什么问题?
答案1
诸如getline()
方法之类的简单功能使用内核的 tty 驱动程序的 cooky 模式,该模式仅具有一些真正基本的行编辑功能(退格、^W
删除单词等),但不支持箭头等。
要获得完整的行编辑功能,您应该使用readline
库而不是getline()
。