Come cambiare il collegamento precedente / successivo in bash?


Risposte:


26

La risposta corretta dipende dal terminale in uso.

Per Gnome Terminal o versioni recenti di xterm, inseriscilo in ~ / .inputrc:

"\e[1;5C": forward-word
"\e[1;5D": backward-word

Per PuTTY, inseriscilo nel tuo ~ / .inputrc:

"\eOC": forward-word
"\eOD": backward-word

Per rxvt, inseriscilo nel tuo ~ / .inputrc:

"\eOc": forward-word
"\eOd": backward-word

Probabilmente puoi cavartela mettendo tutti insieme in ~ / .inputrc.

In tutti i casi, devi anche inserirlo nel tuo ~ / .bashrc (o ~ / .zshrc):

export INPUTRC=~/.inputrc

Se il problema persiste o hai un terminale diverso, vai al tuo terminale e digita Ctrl+ V Ctrl+ ->. Quindi usalo al posto di "\e[1;5C"o "\eOC"sopra. Ripeti per Ctrl+ <-.

Nota che devi scrivere le sequenze di escape della tastiera usando la sintassi inputrc , ad es

  • \C significa controllo
  • \esignifica fuga (che appare come ^[quando si digita usando Ctrl + V sopra)

Ctrl + V, Ctrl -> stampa "^ [[1; 5C" e sto usando gnome-terminal.
ripper234,

2
Quindi prova "\e[1;5C": forward-word. E fai anche la Ctrl+ Vcosa per Ctrl+ Left Arrow.
Mikel,

Grazie, funziona come un fascino. Lentamente ma sicuramente, imparerò a nuotare in Linux. Perché hanno dovuto renderlo così non intuitivo in primo luogo? (Devi ammettere che ctrl-sinistra, ctrl-destra sono scelte migliori)
ripper234

1
Se pensi che Linux non sia intuitivo per cominciare, prova un'installazione predefinita di FreeBSD o anche di Solaris. Avere bash come shell iniziale è un sogno. Inoltre, poiché le tastiere non hanno sempre avuto i tasti freccia, Emacs e quindi bash supportano anche le scorciatoie. Prova a usare Ctrl-b e Ctrl-f per un po '.
penguin359,

2
La bellezza dei sistemi UNIX / Linux è che è facile spostarsi tra le impostazioni. Una volta che hai configurato i tuoi programmi preferiti nel modo che preferisci, copiali. In realtà sto usando il controllo versione per i file della mia directory home come .inputrc, .bashrc, .vimrc e così via. Uso mercurial per clonare e mantenere tutte le impostazioni della mia directory home aggiornate tra i computer. Sto anche programmando di pubblicare il mio repository in modo che altri possano condividerlo con tutto il mio duro lavoro.
penguin359,

3

Se stai usando ZSH, devi prendere un metodo diverso, perché, citando le parti rilevanti dalla guida ZSH di ArchLinux :

Zsh non usa readline #like bash #, invece usa il suo zle proprio e più potente.

Non legge / etc / inputrc o ~ / .inputrc.

Dopo aver letto quella guida, ho pensato di aver bisogno di una fonte modesta di ZSH per avere l'idea generale di come farlo, e quindi ho trovato questo file oh-my-zsh che descrive il comportamento che volevo, ho copiato le parti pertinenti che ho voleva nel mio ~ / .zshrc:

bindkey -e #Use emacs mode, it's more sane for beginners
bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word
bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word
# Also, If you want to copy paste this into your zshrc,
# I'm pretty sure you would have to add this at the top : 
# setopt interactive_comments

stavo provando ctrl + rightarrow, ma non fa viaggiare una parola su Mac
TomSawyer il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.