Unterschied zwischen „Backward Kill Line“ und „Unix Line Discard“

Unterschied zwischen „Backward Kill Line“ und „Unix Line Discard“

Ich lese die Manpage von Bash und lerne die Tastaturkürzel auswendig. C-x ruboutist an gebunden backward kill lineund C-uist 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-lineein negatives Präfixargument annehmen können, während unix-line-discardsie 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-discardes auf dem Schlüsselbund gespeichert wird, während backward-kill-linees nicht so ist - ich konnte jedoch nicht herausfinden, wie ich das überprüfen kann und dieEmacs Wikisagt, dass backward-kill-lineauch an den jeyring angehängt

Andere Verwendung dieser Begriffe:https://github.com/junegunn/fzf/pull/489/files#diff-1fabf11f4aca2d62eb64290f66d25217R180

verwandte Informationen