Вопрос: В командной строке Bash почему Control + x и Backspace очищают текущую строку?


Я обнаружил это по ошибке: контроль+Икс с последующим возврат на одну позицию

Кто-нибудь знает, почему это очищает линию? Любая документация?


5
2017-11-07 17:56


Источник




Ответы:


Да. Из man bash:

   Killing and Yanking
       kill-line (C-k)
              Kill the text from point to the end of the line.
       backward-kill-line (C-x Rubout)
              Kill backward to the beginning of the line.

12
2017-11-07 18:02



сладкий, я узнал что-то новое сегодня, спасибо! - ThatGraemeGuy


Это эквивалент разреза в Windows. Вы можете вставить его обратно с помощью Ctrl + Y.


3
2017-11-07 18:06



Я даже не знал, что у Bash есть функции, похожие на буфер обмена! Приятно знать! - Belmin Fernandez
На самом деле это волшебство readline. - MikeyB
Правда, но конечный результат примерно такой же. - Tim Brigham
@timbrigham: Да, но это означает, что он также работает в других программах с использованием readline, а для тех, кто этого не делает, вы могли бы использовать rlwrap, - hammar


Как уже отмечалось, он находится на странице руководства. Точнее, ключевые комбинации, о которых идет речь, относятся к EMACS, который является ключевым ключом для Bash в ряде дистрибутивов Linux. Если вам нужно использовать vi вместо Bash, вы можете использовать:

set -o vi

Чтобы переключить его обратно на EMACS:

set -o emacs

3
2017-11-07 18:59





bash поддерживает то, что называется readline библиотека, которая позволяет вам делать совершенно невероятное количество вещей с вашей оболочкой. Одна из тех вещей, что readline поставляется с большое количество стандартных сочетаний клавиш, такие как:

Ctrl-b  Move the cursor one character   ⇦ to the left
Ctrl-f  Move the cursor one character   ⇨ to the right
Alt-b   Move the cursor one word    ⇦ to the left
Alt-f   Move the cursor one word    ⇨ to the right
Ctrl-a  Move the cursor     ⇤ to the start of the line
Ctrl-e  Move the cursor     ⇥ to the end of the line
Ctrl-x-x    Move the cursor      ⇤⇥ to the start, and to the end again
Ctrl-d  Delete  the character   underneath the cursor
Ctrl-u  Delete  everything  ⇤ from the cursor back to the line start
Ctrl-k  Delete  everything  ⇥ from the cursor to the end of the line
Alt-d   Delete  word    ⇨ untill before the next word boundary
Ctrl-w  Delete  word    ⇦ untill after the previous word boundary
Ctrl-y  Yank/Paste  prev. killed text   at the cursor position
Alt-y   Yank/Paste  prev. prev. killed text at the cursor position
Ctrl-p  Move in history one line    ⇧ before this line
Ctrl-n  Move in history one line    ⇩ after this line
Alt->   Move in history all the lines   ⇩ to the line currently being entered
Ctrl-r  Incrementally search the line history   ⇧ backwardly
Ctrl-s  Incrementally search the line history   ⇩ forwardly
Ctrl-J  End an incremental search
Ctrl-G  Abort an incremental search and restore the original line
Alt-Ctrl-y  Yank/Paste  arg. 1 of prev. cmnd    at the cursor position
Alt-.
Alt-_   Yank/Paste  last arg of prev. cmnd  at the cursor position
Ctrl-_
Ctrl-x
Ctrl-u  Undo the last editing command; you can undo all the way back to an empty line
Alt-r   Undo all changes made to this line
Ctrl-l  Clear the screen, reprinting the current line at the top
Ctrl-l  Clear the screen, reprinting the current line at the top
Completion  TAB Auto-complete a name
Alt-/   Auto-complete a name (without smart completion)
Alt-?   List the possible completions of the preceeding text
Alt-*   Insert all possible completions of the preceeding text
Ctrl-t  Transpose/drag  char. before the cursor ↷ over the character at the cursor
Alt-t   Transpose/drag  word before the cursor  ↷ over the word at/after the cursor

Вот некоторые хорошая информация по настройке readline также.


2
2017-11-09 08:14