我目前在 OSX 上使用 bash(通过 iTerm2)。有时我必须运行带有非常长命令行参数的程序。如果我发现自己输入错误,则需要花很长时间才能返回错误并进行修复。我知道某些程序(例如 nano)支持鼠标报告光标定位。是否有任何 shell 支持此功能,或者(甚至更好)作为 bash 的选项?
答案1
听起来你应该花点时间学习一些默认的readline
键盘快捷键。请注意user606723 的回答
上面给出了一些基本的按键,但Home和
Alt+arrow键并非在所有终端上都有效。以下是我认为最有用的几个按键,它们在更多终端上也有效。
(除非另有说明,“单词”指的是字母数字字符串。)
- Alt-f:去一个单词向前。
- Alt-b:去一个单词后退。
- Ctrl-a:转到行首
- Ctrl-e:转到行尾
- Alt-d:删除至结尾单词
- Alt-Backspace:删除至开头单词
- Ctrl-w:向后删除至空格
- Ctrl-y:粘贴最近删除的文本
- Ctrl-b, Ctrl-f:向后/向前移动一个字符,相当于leftandright
- Ctrl-h, Ctrl-d:分别相当于Backspace和 Delete。
我列出最后几个是因为我发现它们比使用箭头键或删除/退格键更方便。您可以看到使用这些基本快捷键,您可以相当轻松地进行相当多的编辑。但还有更多:
- Alt-.:循环遍历历史记录中前几行的最后一个单词(空格分隔)。使用它,您可以获取最近输入的命令的最后一个参数。
- Ctrl-_:撤消(增量)
- Ctrl-]:向前搜索字符(类似于
f
vim,但不太方便) - Ctrl-r:反向历史搜索
- Alt-0... Alt-9:下一个命令的数字参数。例如,如果您想要删除 4 个单词:Alt-4Alt-d。或者,如果您
A
出于某种原因需要在命令行中 使用 1024 Alt-1024A:。 - Ctrl-u:从光标位置删除到行首
- Ctrl-k:从光标位置删除到行尾
这些只是我使用的一小部分 - 手册页中还有更多。
答案2
我不知道但是......
历史扩展
teh
纠正后重复上一个命令the
^teh^the^
在将foo
第一次出现的单词更改为后重复包含该单词的最后一个命令bar
qax
!?foo?:s/bar/qax/
行编辑
您可以使用 emacs 风格的编辑命令快速浏览该行。
我更喜欢 vi 模式set -o vi
,这意味着我可以使用b和w一次向前和向后移动一个单词,并使用fx
将光标移动到下一个特定字符出现的位置x
。
答案3
答案4
这不是一个“答案”,而是一个解决方案。我将其作为答案提交,因为我需要额外的空间。
Home您是否尝试过使用和Alt+的组合Left
- Home- 将采取正面该命令。
- End- 将采取结尾该命令。
- Alt+ Left- 将带您“单词”到左边。
- Alt+ Right- 将带您“单词”到正确的。
使用这些组合键,应该可以更轻松地追溯到您的错误=)