
Estoy leyendo la página de manual de bash y memorizando los atajos de teclado. C-x rubout
está vinculado a backward kill line
y C-u
está vinculado a unix line discard
, pero las descripciones de estos comandos tienen el mismo aspecto. ¿Cuál es la diferencia entre estos comandos?
Respuesta1
en suimplementación actual, estas dos funciones parecen hacer más o menos lo mismo, excepto que backward-kill-line
pueden tomar un argumento de prefijo negativo, mientras que unix-line-discard
ignoran el argumento de prefijo.
/* 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;
}
Respuesta2
Esto es lo que encontré:
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
Parece que unix-line-discard
lo guarda en el llavero, mientras que backward-kill-line
no lo hace; sin embargo, no pude encontrar cómo verificarlo y elWiki Emacsdice que backward-kill-line
también se agrega al jeyring
Otro uso de estos términos:https://github.com/junegunn/fzf/pull/489/files#diff-1fabf11f4aca2d62eb64290f66d25217R180