Чи є посібник, щоб отримати список клавіш швидкого доступу?


21

Є багато ярликів, які я використовую під час взаємодії з командним рядком bash, щоб зробити роботу легшою та швидшою.

Подібно до:

  • ctrl+ L: для очищення екрана
  • ctrl+ a/ ctrl+ e: для переміщення початку / кінця рядка
  • ctrl+ r: для пошуку історії команд, лише написання декількох знаків
  • ctrl+ u/ ctrl+ y: вирізати / вставити лінію.

та багато іншого, що я хочу знати, і що, безумовно, корисно буде вивчити.

Я хочу знати, звідки я можу отримати список цих ярликів в Ubuntu? Чи є посібник, в якому перераховані ці ярлики?

ПРИМІТКА:

Я хочу отримати список ярликів та їх дії в одному місці. Це дійсно допоможе вивчити багато з них за невелику тривалість часу. Тож чи можемо ми отримати такий список? Хоча спасибі за надану тут відповідь ..

Відповіді:


22

Значення за замовчуванням є 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_this1.
  • На (тільки) виникнення Programmable Completion, що є наступним розділом, встановіть змінну 0.
  • Якщо змінна дорівнює 1, то позбудьтеся провідного пробілу (три пробіли) та надрукуйте рядок.

1
Це ярлики за замовчуванням, не обов'язково ярлики в реальній системі ОП. bind -Pбуло б точніше.

@BroSlow Хороший коментар. Я все ще думаю, що в моїй відповіді є заслуга, оскільки це більш докладно про те, що виконують команди. Якщо ви напишете це як відповідь, я поставлю +1.
Sparhawk

@Sparhawk: +1 для вашої відповіді. Я шукаю список ярликів в одному місці. Тож якщо посібник з bash може розповісти мені про всі комбінації клавіш, як я зберу його, як ви тут відповіли !! Як ти взяв такий список? Чи є спосіб розібрати ярлики з дією та зберегти його в іншому файлі? Я буду чекати вашої відповіді ..
Саурав Кумар

Якщо ви шукаєте посібник з bash Readline Command Names, ви побачите всі команди в цьому розділі. Я напишу короткий сценарій, щоб витягнути його до текстового файлу, але зараз не можу це зробити (я встигну через кілька годин).
Sparhawk

@Sparhawk: Ваша відповідь допомогла мені написати просту команду grep filter. Перевірте це тут сподіваюся , що ви хотіли б його. Спасибі за вашу допомогу. Хоча я чекаю твого сценарію .. :)
Саурав Кумар

20

Ви можете перерахувати всі ярлики в поточній оболонці Баша, викликавши Баш вбудованої команди bindз -Pопцією.

напр

bind -P | grep clear
clear-screen can be found on "\C-l".

Щоб змінити їх, ви можете зробити щось на кшталт

 bind '\C-p:clear-screen'

І покладіть його у файл init, щоб зробити його постійним (зауважте, що ви можете мати лише комбінацію клавіш, прив’язану до однієї речі за один раз, тому вона втратить будь-яку прив'язку, яку вона мала раніше).


Отримання клавіш швидкого доступу шляхом пошуку по імені для мене мало незвичне, а також тривалий процес. Чи є якийсь простий спосіб отримати список ярликів в одному місці? Сподіваюся, ти зрозумієш. +1, хоч для такого підходу ..
Саурав Кумар

2
@SauravKumar bind -Pповинен надати вам усі ярлики. Якщо ви маєте на увазі ігнорування тих, у яких немає відображень для функцій прив'язки / перегляду, ви можете зробити щось на кшталтbind -P | grep -v "not bound"

7

Наступна команда дає хороший стовпчастий висновок, що показує використання та ярлики.

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.

Пояснення

  • отримує всі ярлики.

    bind -P
  • видаляє всі непризначені ярлики

    grep "can be found"
  • сортує вихід

    sort
  • друкує перший стовпець (тобто функцію) і виправдовує текст

    awk '{printf "%-40s", $1}
  • Це частина попередньої команди. Він друкує стовпці 6+ (тобто ярлики).

    {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'
  • Вкладає вихід у гарний текстовий файл у домашньому редакторі з назви ярликів

    > shortcuts

Ви можете зрозуміти, як працює команда, виконавши наступні команди.

bind -P
bind -P | grep "can be found"
bind -P | grep "can be found" | sort

@SauravKumar Ви хочете, щоб я щось відповів?
Зареєстрований користувач

2
+1 для вашої відповіді та щоб зробити її більш значущою :) :) Я пропустив це, і це змінило все значення речення;) Ні, вам нічого не потрібно додавати. Ви зробили все можливе ..
Саурав Кумар

+1 Приємна команда! Я розширив його, щоб включити невстановлені ярлики:bind -P | tail -n +2 | sort | awk '{printf "%-40s", $1} {if ($6 == "any") {printf"\n"} else {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}}'
wjandrea

1

Гаразд, у мене є спосіб отримати список ярликів, фільтруючи посібник з bash . Він також дасть опис того, що саме робить кожен ярлик. Дякую Спархаку, який просвітив мене, щоб знайти рішення. Мені потрібно було навчитися вживати регулярні вирази, хоча мені все ще не вдається :)

Отже ось команда з одним рядком:

man bash | grep "(.-.*)$" -A1

Ось невелике виведення результату:

   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).
   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
   previous-history (C-p)
          Fetch the previous command from the history list, moving back in the list.
   next-history (C-n)
          Fetch the next command from the history list, moving forward in the list.
   beginning-of-history (M-<)
          Move to the first line in the history.
   end-of-history (M->)
          Move to the end of the input history, i.e., the line currently being entered.
   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.
   forward-search-history (C-s)
          Search forward starting at the current line and moving `down' through the history as necessary.  This is an incremental search.

Тепер збережіть ярлики у файл:

man bash | grep "(.-.*)$" -A1 > bash_shortcuts

Це все, що мені було потрібно. Мені просто хотілося знати клавіші швидкого доступу, призначені bash, і я не перенастроював жодних клавіш, як BroSlow попросив мене.

Ще раз дякую усім за їх внесок.

Примітка :

Якщо хтось хоче це покращити, він / вона вітається. Я лише згадував спосіб перерахувати ті ярлики, які були призначені деякими клавішами. Тож якщо хтось знає, як перелічити ті дії, які не були призначені описом, використовуючи цей спосіб , то вітається :)


Дуже хороша. Однак єдина проблема полягає в тому, що це надрукує лише перший рядок описів багато рядків. Крім того, він пропускає заголовки та команди без натискань клавіш за замовчуванням (наприклад dump-macros), хоча це може бути саме тим, що ви хочете.
Sparhawk

1

Поки керівництво bash не буде змінено таким чином, щоб зробити цю команду неправильною (що мало ймовірно), наступна команда покаже всі ярлики за замовчуванням для bash.

man bash | grep -A294 'Commands for Moving'

Це дає результат, який виглядає так:

 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.
   redraw-current-line
          Refresh the current line.

Commands for Manipulating the History
   accept-line (Newline, Return)
          Accept the line regardless of where the cursor is.  If this line is non-empty, add it to the history list  according
          to  the state of the HISTCONTROL variable.  If the line is a modified history line, then restore the history line to
          its original state.
   previous-history (C-p)
          Fetch the previous command from the history list, moving back in the list.
   next-history (C-n)
...

Якщо посібник з bash буде змінено, цю команду можна легко змінити відповідно до потреб.


Молодці Патіль !! Чому я не подумав про такий спосіб .. :)
Саурав Кумар,

@Patil Я думав і про жорстке кодування кількості рядків, але вважав, що більш ймовірно, що в посібнику з bash було змінено кількість рядків у командному розділі, а не змінили порядок його розділів. Я погоджуюсь, що або це, ймовірно, малоймовірно.
Спархаук
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.