我是 GNU Screen 的新用户。我已经使用 Bash 很长时间了,我想尝试一下 GNU Screen。
如您所知,GNU Screen 使用“Ca”(Control-A)作为命令字符。问题是,这会干扰 Bash(和 GNU Readline)中的行编辑功能,因为 Bash 中的 Control-A 将移动到行的开头。”
我知道我可以将命令字符设置为另一个键序列,例如“^Q”或“``”(反引号),但是我无法找到另一个尚未使用的键序列(终端使用了 ^Q , 在编写 shell 脚本时使用反引号)。看起来命令字符的长度可能只有一两个字符。我可以将 GNU Screen 控制字符设置为“Control-Shift-A”之类的吗?
(我还不能使用多个超链接,所以我无法链接到 Bash 文档)
这个问题解释了如何.inputrc使用C-x C-r. 但是如何使用 bash 脚本中的命令重新加载它呢?
我正在尝试从长期使用 Tcsh 转向最近对 Bash 的探索。
我设法移植了所有我最喜欢的功能,除了 Ctrl+w 将空格和斜杠视为单词边界,最有可能是向后删除单词。然而,在 Bash 中 readline 一直删除到第一个空格,删除之间的所有斜杠。
我已经使用 bind 在 .inputrc 和 .bashrc 中尝试了许多不同的 \Cw:backward-kill-word 组合,但我无法让它以我想要的方式工作。
有趣的是,通过工作中的 Windows 中的 Putty,我可以使用 Alt+Backspace(手册中也说这是默认绑定)来产生我想要的确切行为。但是在我家里的 Mac 上的 Terminal.app 中,这不起作用。我碰巧从 Terminal.app 登录的任何 FreeBSD 或 Linux 服务器也是如此。
所以我转向超级用户寻求帮助。
我sqlite3在 Ubuntu 上安装了该软件包,但不支持 readline。这意味着没有命令历史记录和 readline 为您提供的其他漂亮功能。
这是配置问题还是包装问题?是否有不同的包存档可以为我提供开箱即用的 readline 支持?或者,我如何自己编译 sqlite3 以确保它具有 readline 支持?
在 bash emacs 模式下,无论如何要删除到前一个斜杠字符?例如,如果我输入命令cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_path并只想删除reallylongincorrectfolder. 有什么快捷方式吗?在 bash 中,这对我来说是一个非常常见的场景。像dF<char>vi中的东西?
我在 Mac 上工作,Sierra 10.12.3,我试图通过psql命令访问 PostgreSQL 数据库,但它抛出了错误
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /usr/local/bin/psql
Reason: image not found
Abort trap: 6
Run Code Online (Sandbox Code Playgroud)
一两天前,我和某人一起工作,我需要安装 pip,所以我运行了brew install pip,一切都很好。这是我psql从那时起第一次尝试跑步,我不确定这与我的问题有什么关系,但似乎很可能,因为我没有进行任何其他更改。
现在我做了一些侦探工作,发现如果我去/usr/local/opt/那里确实有一个readline别名目录指向/usr/local/Cellar/readline/7.0.1(版本 7.0.1 似乎也在某个时候安装了 - 也许作为 pip 的一部分?也许我做错了...)所以应该抛出原始错误是有道理的。我将别名更改为指向,/usr/local/Cellar/readline/6.3.8错误略有变化:
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /usr/local/bin/psql
Reason: no suitable image found. Did find:
/usr/local/opt/readline/lib/libreadline.6.dylib: stat() failed with errno=20
Abort trap: 6
Run Code Online (Sandbox Code Playgroud)
所以看起来我正在到达某个地方,但仍然有问题。如果有人能阐明解决方案,我将永远感激不尽。
我用的是 Mac,所以我的键盘上没有Home和End键。我也经常使用 SSH 连接到 Linux 服务器。我发现当我通过 SSH 连接到运行 Jaunty 的 Ubuntu Linux 服务器时,我可以使用 readline 键绑定Ctrl-a并且Ctrl-e将光标移动到行的开头或结尾,但是我经常使用几个 Hardy 服务器SSH 到,并且这些键绑定在连接到它们时不起作用。
我已经尝试从 Linux 机器连接到它们,以防万一这与我的 Mac 终端的配置方式有关,并且我看到了相同的结果。
有谁知道为什么,以及如何解决这个问题?
可能的重复:
Mac OS 中命令的 Bash 完成
我刚刚从 linux 转移到 mac,我遇到的问题之一是选项卡完成只有 1 级深,我不知道如何更正。
让我举例说明——当我在 ubuntu 上使用 git 时,我会开始打字
$ git
Run Code Online (Sandbox Code Playgroud)
并点击选项卡,外壳将完成命令或显示可用于我输入的字母的选项。这也是我的 mac 上发生的情况(1 级)。但是,当我继续输入命令的下一部分时
$ git commit
Run Code Online (Sandbox Code Playgroud)
并点击选项卡,mac 终端不会像在 Linux 中那样完成下一个子命令(对于 git)。支持此多级命令完成的其他程序也是如此。我怀疑这可能是 readline 库问题,但我不确定应该安装哪个。
我正在尝试做正确的事情并将我的键绑定放入~/.inputrc.
然而,事实证明我必须改变
bind '"\e\C-j":"\e[1~quiet \e[4~\n"'
Run Code Online (Sandbox Code Playgroud)
进入
"\e\C-j": "\eOHquiet \eOF\n"
Run Code Online (Sandbox Code Playgroud)
现在\eOH(nav-block-pos1 bound to beginning-of-line) 和\eOF(nav-block-end bound to end-of-line) 本身就是我配置中的绑定,我可能不能总是依赖。
所以主要的问题是为什么绑定到 num-block-pos1 ( \e[1~) 和 num-block-end ( \e[4~) 可以使用bind但在 my 中不行~/.inputrc?
编辑:
整个事情变得更加复杂,现在我意识到\e\C-j它只适用于 Gnome 终端(或者可能也适用于 xterm,谁知道...)。
对于我的 TTY,它必须是
"\e\C-m": "\e[1~_quiet \e[4~\n"
Run Code Online (Sandbox Code Playgroud)
那么是不是各种 VT 对如何解释密钥有不同的实现?