Die Eingabetaste kann nicht zum Ausführen von Befehlen in zsh verwendet werden

801
Mike A

Ich habe vor kurzem zsh (v5.1.1) in einem neuen Ubuntu-Setup installiert, aber wenn ich in gnome-terminal zu ihm wechsle, kann ich nicht die Eingabetaste verwenden, um den Befehl auszuführen. Die einzige Möglichkeit, Befehle auszuführen, ist die Verwendung von CTRL+J. Ich kann das auf andere Term-Emulatoren wie xtermund replizieren uxterm.

Alle anderen Tasten funktionieren gut, einschließlich der Tasten HOME, END, PGUP, PGDOWN, DEL und INSERT.

Ich habe schon zshso oft auf anderen Systemen installiert, bin aber noch nie auf ein Problem wie dieses gestoßen. Was muss ich ändern, damit die Eingabetaste normal funktioniert?

Meine /etc/zsh/zshrcDatei:

typeset -ga debian_missing_features  if [[ -z "$DEBIAN_PREVENT_KEYBOARD_CHANGES" ]] && [[ "$TERM" != 'emacs' ]] then  typeset -A key key=( BackSpace "$" Home "$" End "$" Insert "$" Delete "$" Up "$" Down "$" Left "$" Right "$" PageUp "$" PageDown "$" )  function bind2maps () { local i sequence widget local -a maps  while [[ "$1" != "--" ]]; do maps+=( "$1" ) shift done shift  sequence="$" widget="$2"  [[ -z "$sequence" ]] && return 1  for i in "$"; do bindkey -M "$i" "$sequence" "$widget" done }  bind2maps emacs -- BackSpace backward-delete-char bind2maps viins -- BackSpace vi-backward-delete-char bind2maps vicmd -- BackSpace vi-backward-char bind2maps emacs -- Home beginning-of-line bind2maps viins vicmd -- Home vi-beginning-of-line bind2maps emacs -- End end-of-line bind2maps viins vicmd -- End vi-end-of-line bind2maps emacs viins -- Insert overwrite-mode bind2maps vicmd -- Insert vi-insert bind2maps emacs -- Delete delete-char bind2maps viins vicmd -- Delete vi-delete-char bind2maps emacs viins vicmd -- Up up-line-or-history bind2maps emacs viins vicmd -- Down down-line-or-history bind2maps emacs -- Left backward-char bind2maps viins vicmd -- Left vi-backward-char bind2maps emacs -- Right forward-char bind2maps viins vicmd -- Right vi-forward-char  # Make sure the terminal is in application mode, when zle is # active. Only then are the values from $terminfo valid. if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then function zle-line-init () { emulate -L zsh printf '%s' $ } function zle-line-finish () { emulate -L zsh printf '%s' $ } zle -N zle-line-init zle -N zle-line-finish else for i in mkx; do (( ${+terminfo[$i]} )) || debian_missing_features+=($i) done unset i fi  unfunction bind2maps fi # [[ -z "$DEBIAN_PREVENT_KEYBOARD_CHANGES" ]] && [[ "$TERM" != 'emacs' ]]  zstyle ':completion:*:sudo:*' command-path /usr/local/sbin \ /usr/local/bin \ /usr/sbin \ /usr/bin \ /sbin \ /bin \ /usr/X11R6/bin  (( ${+aliases[run-help]} )) && unalias run-help autoload -Uz run-help  # If you don't want compinit called here, place the line # skip_global_compinit=1 # in your $ZDOTDIR/.zshenv or $ZDOTDIR/.zprofile if [[ -z "$skip_global_compinit" ]]; then autoload -U compinit compinit fi 
0
Zuerst würde ich die Tastenkombinationen für `CTRL + J` und` CTRL + M` überprüfen, z. B. mit dem Befehl `bindkey | grep -E "^ \" \ ^ (J | M) "`. mpy vor 8 Jahren 0
Ich habe für beide eine "Accept-Line" bekommen. "" ^ J "Accept-Line" ^ M "Accept-Line" Mike A vor 8 Jahren 0
Produziert die ENTER-Taste nach dem Starten von cat ohne Argumente neue Zeilen? Versuchen Sie es auch, wenn es wie erwartet funktioniert, wenn Sie _zsh_ ohne Konfiguration über `zsh -f` aufrufen. mpy vor 8 Jahren 0
Die ENTER-Taste erzeugt keine neuen Zeilen. `Zsh -f` hat jedoch funktioniert. Sieht dann etwas in meiner `/ etc / zsh / zshrc` aus? Mike A vor 8 Jahren 0
Erzeugt 'ENTER' tatsächlich eine der Schlüsselsequenzen `^ M` und` ^ J`? Sie sollten dies mit "STRG + V" gefolgt von "ENTER" überprüfen können. Adaephon vor 8 Jahren 0

1 Antwort auf die Frage

1
Barry

Geben Sie zur Ausgabe des Zeichens, das zsh mit jedem Schlüssel verknüpft ist, ⌃v und dann das Zeichen ein. (wobei ⌃ das Steuerzeichen ist)

Zum Beispiel:

  • meine Rückkehrschlüsselausgaben: ^ M
  • meine Eingabetastenausgaben: ^ [OM

Damit sich meine Eingabetaste wie meine Rückkehrtaste verhält:

bindkey ^[OM accept-line