Seria possível configurar o iTerm 2 para retroceder e encaminhar uma palavra pelo texto atual na linha de comando usando um atalho de teclado?
Seria possível configurar o iTerm 2 para retroceder e encaminhar uma palavra pelo texto atual na linha de comando usando um atalho de teclado?
Respostas:
Ctrl-[ b
retrocede uma palavra. Você também pode usar Esc
em vez ou Ctrl-[
, e f
ir para a frente.
Isso é Ctrl
+ [
release e depois b
ou f
. Ou Esc
e b
ou f
.
Mais informações podem ser encontradas nesta outra discussão no AskDifferent.
Matar uma mosca com um canhão:
Em seguida, você pode mover uma palavra para trás usando Option ⌥+ ←e uma palavra para frente usando Option ⌥+ →, mover para o início da linha usando fn+ ←e para o final da linha com fn+ →. Também é possível excluir uma palavra para trás usando Option ⌥+ ⌫, excluir toda a linha usando Command ⌘+ ⌫.
Se a predefinição não aparecer, reinstale o iTerm2. Se você o instalou usando o Homebrew + Cask:
brew cask reinstall iterm2
Eu gosto da seguinte configuração.
avançar uma palavra
option+right
send escape sequence
f
retroceder uma palavra
option+left
send escape sequence
b
excluir para o início da palavra ( crédito )
option+delete
send hex code
0x1B 0x08
excluir para o final da palavra
fn+option+delete
send escape sequence
d
(Não me lembro com certeza, mas acho que copiei esta resposta da resposta de jherran abaixo e a acrescentei mais. Deveria ter acrescentado informações extras nos comentários ou sugerido edições nessa resposta. Não sei como melhorar a situação, mas agora é conhecida.)
Isso funciona pelo menos para o bash. Para o zsh, existem outras maneiras de navegar.
Semelhante a outras respostas, mas para o Zsh demorei um pouco para encontrar isso:
Se você estiver usando o Zsh, como o Oh My Zsh, no iTerm, vá para: Preferências> Perfis > Submenu Chaves
Clique no sinal de +
Adicione sua combinação de atalhos, escolha "Enviar seqüência de escape"
entradas para esquerda e direita abaixo.
esquerda:
[1;5D
direito:
[1;5C
Abrir Preferências
Configure a tecla de opção esquerda (e / ou direita) para enviar o Esc +
Se você mexeu com suas predefinições, pode ser necessário carregar a predefinição (cuidado, isso pode apagar as teclas personalizadas!)
Se você vir caracteres estranhos depois de fazer isso, talvez seja necessário configurar seu ~ / .inputrc ou / etc / inputrc
Adicione isso ao seu ~ / .inputrc:
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
exemplo completo inputrc:
# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.
# Be 8 bit clean.
set input-meta on
set output-meta on
# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.
# set convert-meta off
# try to enable the application keypad when it is called. Some systems
# need this to enable the arrow keys.
# set enable-keypad on
# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys
# do not bell on tab-completion
# set bell-style none
# set bell-style visible
# some defaults / modifications for the emacs mode
$if mode=emacs
# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert
# mappings for "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history
# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward
# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
$if term=rxvt
"\e[7~": beginning-of-line
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif
# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line
# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line
$endif
Você pode configurar seu terminal no modo vi set -o vi
para poder usar os comandos usuais do vi motion (adicione a linha .bash_profile
para armazenar a configuração permanentemente.)
Portanto, como se no vi, você pode pressionar Esc
, b
para mover uma palavra para trás ( w
para frente), vá para o início da linha com 0
ou pesquise um caractere para trás com F
+ o caractere.
Pressione i
para voltar ao modo Normal e insira.
Quem conhece o vi pode fazer muito mais. Uma folha de dicas pode ser encontrada aqui .
Esc
em seguida, I
ir apenas uma vez para o início da linha é um pouco menos conveniente do que Ctrl-a
- neste caso de uso acontece muitas vezes quando você apenas deseja modificar o nome do comando. Então, eu uso o modo vi com algumas alterações de combinação de teclas no iTerm2 para mapear Ctrl-A
e semelhante à sequência de escape Esc+0
. Dessa forma, esses casos são ainda mais rápidos, pois terminam no modo de edição.
Com o iTerm2 3.1.4, consegui configurar o seguinte sem adicionar mapeamentos de teclas individuais.
Com uma nova sessão do Terminal, agora você pode usar:
Option ⌥+ fpara avançar
Option ⌥+ bpara avançar
Option ⌥+ Delete ⌫para excluir o Word