如何绑定上一个和下一个历史键来控制bash中的j和k



我一直在试图找到一种方法,将上一个历史记录绑定到bash中的Controlk,并将下一个历史存储绑定到controlj。我知道这些命令已经有了像Controlp和n这样的绑定,但问题是我已经习惯了Controlk和j。我在zsh中使用vim时绑定了它们。

我现在需要将ssh连接到一个项目的服务器(使用bash(中,并希望具有相同的密钥绑定。我已经尝试将这些命令包含在我的.inputrc:中

"C-k": previous-history
"C-j": next-history 

但是,当文件在登录时加载时,它会显示此错误。

-bash: C-k:: command not found
-bash: C-j:: command not found

除了C-k和C-j,我还尝试过使用

^k和^j一些上下文:我使用Macbook,这些是适用于zsh:的绑定

# For Control k and j
bindkey '^k' up-line-or-history
bindkey '^j' down-line-or-history

更新:我还添加了。~/。在我的.bash_profile中输入rc,以便在ssh登录期间运行。

在Readline init文件~/.inputrc中,有两种方法可以使用密钥绑定(请参阅手册(:

  • 密钥名称:

    Control-k: previous-history
    Control-j: next-history
    
  • keyseq:它必须放在双引号中,并识别一些GNU Emacs风格的转义,尤其是Ctrl:的C

    "C-k": previous-history
    "C-j": next-history
    

此外,不能将~/.inputrc视为Bash脚本(就像从shell初始化文件中获取一样(;它由使用Readline库的任何程序读取——在您的情况下是Bash。

您可以使用默认绑定到C-x C-rre-read-init-file重新加载它。

最新更新