Ich lese die Manpage von Bash und lerne die Tastaturkürzel auswendig. C-x rubout
ist an gebunden backward kill line
und C-u
ist an gebunden unix line discard
, aber die Beschreibungen für diese Befehle sehen gleich aus. Was ist der Unterschied zwischen diesen Befehlen?
Antwort1
In ihrerAktuelle Implementierung, diese beiden Funktionen scheinen mehr oder weniger dasselbe zu tun, außer dass sie backward-kill-line
ein negatives Präfixargument annehmen können, während unix-line-discard
sie das Präfixargument ignorieren.
/* Here is C-u doing what Unix does. You don't *have* to use these
key-bindings. We have a choice of killing the entire line, or
killing from where we are to the start of the line. We choose the
latter, because if you are a Unix weenie, then you haven't backspaced
into the line at all, and if you aren't, then you know what you are
doing. */
int
rl_unix_line_discard (int count, int key)
{
if (rl_point == 0)
rl_ding ();
else
{
rl_kill_text (rl_point, 0);
rl_point = 0;
if (rl_editing_mode == emacs_mode)
rl_mark = rl_point;
}
return 0;
}
/* Kill backwards to the start of the line. If DIRECTION is negative, kill
forwards to the line end instead. */
int
rl_backward_kill_line (int direction, int key)
{
int orig_point;
if (direction < 0)
return (rl_kill_line (1, key));
else
{
if (rl_point == 0)
rl_ding ();
else
{
orig_point = rl_point;
rl_beg_of_line (1, key);
if (rl_point != orig_point)
rl_kill_text (orig_point, rl_point);
if (rl_editing_mode == emacs_mode)
rl_mark = rl_point;
}
}
return 0;
}
Antwort2
Folgendes habe ich gefunden:
backward-kill-line (C-x Rubout)
Kill backward to the beginning of the line.
unix-line-discard (C-u)
Kill backward from the cursor to the beginning of the current line.
https://ftp.gnu.org/old-gnu/Manuals/bash-2.05a/html_node/bashref_97.html
backward-kill-line (C-x Rubout)
Kill backward to the beginning of the line.
unix-line-discard (C-u)
Kill backward from point to the beginning of the line. The
killed text is saved on the kill-ring.
https://man7.org/linux/man-pages/man3/readline.3.html#EDITING_COMMANDS
Scheint, als ob unix-line-discard
es auf dem Schlüsselbund gespeichert wird, während backward-kill-line
es nicht so ist - ich konnte jedoch nicht herausfinden, wie ich das überprüfen kann und dieEmacs Wikisagt, dass backward-kill-line
auch an den jeyring angehängt
Andere Verwendung dieser Begriffe:https://github.com/junegunn/fzf/pull/489/files#diff-1fabf11f4aca2d62eb64290f66d25217R180