Tastaturkürzel Ch, Cm in Bash

Tastaturkürzel Ch, Cm in Bash

SchlagVerwendetGNU Readline. Readline bietet eine Sammlung von Tastaturkürzeln. Es gibt jedoch einige, die auf Bash funktionierenUnddie nicht in Readline dokumentiert sindReferenz. Einige Beispiele sind:

  • C-h- Dasselbe wie die Rücktaste
  • C-m- Dasselbe wie Enter (CR, denke ich)

Warum funktionieren diese Abkürzungen? Ich vermute, dass dies etwas damit zu tun haben könnteASCIIaber ich bin nicht sicher, welche Komponente diese Steuersequenzen als das von mir angegebene Verhalten interpretiert.

Ist es die Readline-Bibliothek? Oder ist es Bash selbst? Ist es mein Terminalemulator? Ist es der Kernel? Usw. …

Welche Komponente bewirkt, dass sich diese Steuersequenzen auf diese Weise verhalten?

Bearbeiten: Meine .inputrcDatei:

# To the extent possible under law, the author(s) have dedicated all 
# copyright and related and neighboring rights to this software to the 
# public domain worldwide. This software is distributed without any warranty. 
# You should have received a copy of the CC0 Public Domain Dedication along 
# with this software. 
# If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. 

# base-files version 4.2-4

# ~/.inputrc: readline initialization file.

# The latest version as installed by the Cygwin Setup program can
# always be found at /etc/defaults/etc/skel/.inputrc

# Modifying /etc/skel/.inputrc directly will prevent
# setup from updating it.

# The copy in your home directory (~/.inputrc) is yours, please
# feel free to customise it to create a shell
# environment to your liking.  If you feel a change
# would be benifitial to all, please feel free to send
# a patch to the cygwin mailing list.

# the following line is actually
# equivalent to "\C-?": delete-char
"\e[3~": delete-char

# VT
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# kvt
"\e[H": beginning-of-line
"\e[F": end-of-line

# rxvt and konsole (i.e. the KDE-app...)
"\e[7~": beginning-of-line
"\e[8~": end-of-line

# VT220
"\eOH": beginning-of-line
"\eOF": end-of-line

# Allow 8-bit input/output
#set meta-flag on
#set convert-meta off
#set input-meta on
#set output-meta on
#$if Bash
  # Don't ring bell on completion
  #set bell-style none

  # or, don't beep at me - show me
  #set bell-style visible

  # Filename completion/expansion
  #set completion-ignore-case on
  #set show-all-if-ambiguous on

  # Expand homedir name
  #set expand-tilde on

  # Append "/" to all dirnames
  #set mark-directories on
  #set mark-symlinked-directories on

  # Match all files
  #set match-hidden-files on

  # 'Magic Space'
  # Insert a space character then performs
  # a history expansion in the line
  #Space: magic-space
#$endif

Antwort1

Die Bindungen (ob sie nun im Handbuch erscheinen oder nicht) erscheinen, wenn Sie

bind -p

Zum Beispiel (unvollständige Auflistung):

"\C-g": abort
"\C-x\C-g": abort
"\e\C-g": abort
"\C-j": accept-line
"\C-m": accept-line
# alias-expand-line (not bound)
# arrow-key-prefix (not bound)
# backward-byte (not bound)
"\C-b": backward-char
# backward-byte (not bound)
"\C-b": backward-char
"\eOD": backward-char
"\e[D": backward-char
"\C-h": backward-delete-char
"\e[3;5~": backward-delete-char
"\C-?": backward-delete-char
"\C-x\C-?": backward-kill-line
"\e\C-h": backward-kill-word
"\e\C-?": backward-kill-word
"\eb": backward-word
"\e<": beginning-of-history

Das Handbuch dokumentiert die -pOption:

Derbind -pBefehlsanzeigenZeile lesenFunktionsnamen und Bindungen in einem Format, das direkt in eine Initialisierungsdatei eingefügt werden kann. SieheIntegrierte Bash-Funktionen.

Die Bindungen (Lesen des Quellcodes) hängen von der Tastaturbelegung ab. Die von mir zitierten sind aus demEmacs-Tastenbelegung, das vor der Anwendung von Skripten aus einer integrierten Tabelle initialisiert wird. Es gibt eine entsprechende Datei mit Tabellen für dievi-Tastenbelegung.

All das ist Teil vonZeile lesen(das mit gebündelt ist bash). Beim bashStart definiert es die Bindungen mithilfe dieser Tabellen. Abhängig von den anderen Dateien, aus denen es liest /etc/inputrc, ~/.inputrckann es einige dieser integrierten Bindungen hinzufügen, ändern oder entfernen.

Antwort2

Wie im Abschnitt „1.3 Readline-Init-Datei“ des Handbuchs, auf das Sie sich beziehen, erläutert wird, ist die Readline-Bibliothek konfigurierbar. Tastenkombinationen können entweder in /etc/inputrcoder in Ihrem lokalen definiert werden ~/.inputrc.

verwandte Informationen