问题描述
在与 bash 命令行交互时,我使用了许多快捷方式来使工作更轻松、更快捷。
像:
-
ctrl
+L
: 清屏 -
ctrl
+a
/ctrl
+e
:移动行的开始/结束 -
ctrl
+r
: 只写几个字符来搜索命令的历史 -
ctrl
+u
/ctrl
+y
:剪切/粘贴线。
还有很多,我想知道的,肯定对学习有用。
我想知道从哪里可以获得 Ubuntu 中这些快捷方式的列表?有没有列出这些快捷方式的手册?
笔记:
我想在一个地方获取快捷方式列表及其操作。在短时间内学习其中的许多内容真的很有帮助。那么我们有没有办法得到这样的列表呢?虽然感谢您在这里给出的答案..
最佳回答
默认值在 man bash
中,以及每个命令的作用的详细信息。如果您更改了键绑定,请参阅 BroSlow 的回答。
Commands for Moving
beginning-of-line (C-a)
Move to the start of the current line.
end-of-line (C-e)
Move to the end of the line.
forward-char (C-f)
Move forward a character.
backward-char (C-b)
Move back a character.
forward-word (M-f)
Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits).
backward-word (M-b)
Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits).
shell-forward-word
Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters.
shell-backward-word
Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters.
clear-screen (C-l)
Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without clearing the screen.
…
reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary. This is an incremental search.
…
unix-line-discard (C-u)
Kill backward from point to the beginning of the line. The killed text is saved on the kill-ring.
…
yank (C-y)
Yank the top of the kill ring into the buffer at point.
EDIT
这些命令都在手册的连续部分中,因此您可以从 Commands for Moving
浏览它。或者,您可以将整个部分保存到文本文件中
man bash | awk '/^ Commands for Moving$/{print_this=1} /^ Programmable Completion$/{print_this=0} print_this==1{sub(/^ /,""); print}' > bash_commands.txt
(注意,这会打印整个部分,包括没有默认键盘快捷键的命令。)
awk代码的解释
-
在(仅)出现
Commands for Moving
时,将变量print_this
设置为 1。 -
在(仅)出现
Programmable Completion
时,即下一节,将变量设置为 0。 -
如果变量为 1,则去掉前导空格(三个空格),然后打印该行。
次佳回答
您可以通过使用 -P
选项调用 bash 内置 bind
来列出当前 bash shell 中的所有快捷方式。
例如
bind -P | grep clear
clear-screen can be found on "\C-l".
要改变它们,你可以做类似的事情
bind '\C-p:clear-screen'
并将它放入一个 init 文件中以使其永久化(请注意,您一次只能将一个组合键绑定到一个事物,因此它将失去之前的任何绑定)。
第三种回答
以下命令提供了一个很好的柱状输出,显示了使用和快捷方式。
bind -P | grep "can be found" | sort | awk '{printf "%-40s", $1} {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'
这给出了一个输出,看起来像
abort "\C-g", "\C-x\C-g", "\e\C-g".
accept-line "\C-j", "\C-m".
backward-char "\C-b", "\eOD", "\e[D".
backward-delete-char "\C-h", "\C-?".
backward-kill-line "\C-x\C-?".
backward-kill-word "\e\C-h", "\e\C-?".
backward-word "\e\e[D", "\e[1;5D", "\e[5D", "\eb".
beginning-of-history "\e<".
beginning-of-line "\C-a", "\eOH", "\e[1~", "\e[H".
call-last-kbd-macro "\C-xe".
capitalize-word "\ec".
character-search-backward "\e\C-]".
character-search "\C-]".
clear-screen "\C-l".
complete "\C-i", "\e\e".
...
使用以下命令将此输出放入文本文件
bind -P|grep "can be found"|sort | awk '{printf "%-40s", $1} {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}' > ~/shortcuts
该文件是在您的 $HOME 目录中创建的。
Explanation
-
获取所有快捷方式。
\n
bind -P\n
\n
-
删除所有未分配的快捷方式
\n
grep "can be found"\n
\n
-
对输出进行排序
\n
sort\n
\n
-
打印第一列(即函数)并对齐文本
\n
awk '{printf "%-40s", $1}\n
\n
-
这是上一个命令的一部分。它打印 6+ 列(即快捷方式)。
\n
{for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\\n"}}'\n
\n
-
将输出放入名为 shortcuts 的主目录中的一个漂亮的文本文件中
\n
> shortcuts\n
\n
您可以通过运行以下命令了解该命令的工作原理。
bind -P
bind -P | grep "can be found"
bind -P | grep "can be found" | sort