在 bash 中,Ctrl+r命令非常有用,我输入Ctrl+r whatever并在我的历史记录中搜索包含单词的命令whatever。但是,如果我输入whatever并意识到我想搜索该词并点击Ctrl+r没有任何反应。
有没有办法按下一个键并让它表现得好像我输入了Ctrl+r whatever而不是whatever Ctrl+ r?
我有以下内容.inputrc:
"\C-p": history-search-backward
Run Code Online (Sandbox Code Playgroud)
但这仅在行的开头相同时才有效。
很多时候,我在 Terminal.app 或 iTerm 中运行一个命令,按向上箭头返回编辑它,光标跳到上面的行或完全错误的地方。当命令太长以至于它绕到下一行时,尤其会发生这种情况。有时这些长命令都出现在一行上,有时它们在多行中正确显示。
这发生在 iTerm 和 Terminal.app 中
在 vi 和 emacs 模式下也会发生,使它们几乎无法使用。
有任何想法吗?谢谢!
我喜欢在 Bash 中做的一些事情,并且很想知道如何在 PowerShell 中做:
在 Bash 中,我设置了历史滚动,以便它只滚动与当前行具有相同前缀的命令。如果我想查看我的最新提交(例如重用部分评论),我会先写 'git' 然后写?.
相关当然是历史搜索Ctrl+R
为了找到其他东西,我写道:
h | grep foo
Run Code Online (Sandbox Code Playgroud)
在 PowerShell 中,我使用:
h -c 1000 | where {$_.commandline.contains("foo")}
Run Code Online (Sandbox Code Playgroud)
(显然我是新手,必须有更短的方法)
像:
mv file.txt{,.bak}
Run Code Online (Sandbox Code Playgroud)
或者
mv file.txt !#$.bak
Run Code Online (Sandbox Code Playgroud)魔法空间(!$内联扩展)
PowerShell 中有哪些替代方案?
我想永久保存我使用和录制的键盘宏。有没有一种简单的方法可以为我新录制的宏“查看源代码”,以便我可以将它绑定到 ~/.inputrc 中的键盘快捷键?C-x (C-x )
我以为dump-macros会做,但似乎没有...
我使用 linux box 连接槽腻子。将它与 bash 一起使用,我的键盘性能良好,但是当我使用 sqlite shell(sqlite3 程序)时,我的键变得疯狂:
del=^[[3~
up=^[[A
left=^[[D
right=^[[C
down=^[[B
Run Code Online (Sandbox Code Playgroud)
这是我的环境(相关部分):
TERM=linux
SHELL=/bin/bash
SHLVL=1
INPUTRC=/etc/inputrc
Run Code Online (Sandbox Code Playgroud)
我想在 sqlite 上正常使用我的密钥,就像在 windows 上一样。
我的输入:
# do not bell on tab-completion
#set bell-style none
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
# Completed names which are symbolic links to
# directories have a slash appended.
set mark-symlinked-directories on
$if mode=emacs
# for linux console and RH/Debian xterm
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history …Run Code Online (Sandbox Code Playgroud) 在Bash的“Emacs 模式”( set -o emacs) 中,我可以在我最喜欢的外部 $EDITOR 中编辑当前命令行。我所要做的就是按Ctrl+X然后Ctrl+ E。
但是,因为我已经切换到 Bash 的“vi 模式”( set -o vi),所以这个按键序列没有任何作用。在“vi 模式”下,如何启动外部编辑器以编写更长的命令?
在readline(3)我应该能够将 Control-Backspace 映射到与 Control-W 相同的功能(unix-kill-rubout)。无论我输入什么,~/.inputrc我都无法识别它。
\C-\b: unix-kill-rubout
Run Code Online (Sandbox Code Playgroud)
...例如不起作用。我可以将 Control-Backspace 映射到 readline 中的 unix-kill-rubout 吗?
当 bash 具有可用的 vi 绑定(set -o vi)时,向上/向下箭头在命令和插入模式下均可使用。当我将 readline 的 ~/.inputrc 设置为使用 vi 模式(设置编辑模式 vi)时,irb 等应用程序无法获得箭头功能。我试过在 inputrc 中“设置启用键盘”无效。
如何在其他 readline 感知应用程序中获得类似 bash 的箭头功能?
如何确定我在 bash 会话中使用的 readline 版本?
我特别想知道,因为我似乎有 readline 库 6.3,但set enable-bracketed-paste on在我.inputrc的工作中,即使该功能仅在 readline 7.0 中添加。
我在 macOS 10.11(与 Fink 一起安装)上使用 bash 4.4.0。
是否可以使用 GNU Readline(例如 Bash、Python REPL 或任何其他响应~/.inputrc)的程序来让您使用鼠标编辑当前行?例如,I\xe2\x80\x99d 希望能够单击行中的特定位置来移动光标,或选择文本区域。
我怀疑答案是 \xe2\x80\x9cno,这是不支持的\xe2\x80\x9d,因为我没有找到关于 Readline 的有用的 Google 结果(我发现的最好的 \xe2\x80\x99ve 是 ZSH 中的鼠标支持) ,这很好,因为我确实使用它作为我的 shell,但它对其他 Readline 程序没有帮助),但我也没有能够确认这一点。
\n\n我在任意 Readline 程序中发现的最接近这种情况的是,某些终端仿真器尝试检测 Readline 何时处于活动状态并在单击时发出箭头键序列。如果可能的话,我宁愿让 Readline 处理这个问题,既因为我希望它能做得更好,也因为我喜欢我当前使用的终端模拟器,它不支持这一点。
\nreadline ×10
bash ×6
key-binding ×2
linux ×2
vi ×2
emacs ×1
history ×1
inputrc ×1
iterm ×1
keymap ×1
macros ×1
mouse ×1
powershell ×1
productivity ×1
putty ×1
shell ×1
terminal ×1
terminal.app ×1
text-editors ×1
unix ×1
vim ×1