Navegando na CLI: substitua o texto de caractere específico por caractere específico

3

Eu sou um usuário do VIM aprendendo comandos do Emacs para uso no Bash. Eu sei que em meus sistemas eu posso usar Vim-keybindings no Bash, mas eu gostaria de aprender como usá-lo efetivamente em sua configuração padrão.

Considere o seguinte comando que faz o upload de um arquivo para um serviço da Web:

$ time curl -F "[email protected]" -F "baz=777&bin=123&alice=bob" http://somesite.com/internal/project/status/foo/add_status.php

Eu tenho um monte de arquivos para fazer upload com diferentes parâmetros. Aqui estão algumas perguntas:

  1. Como posso facilmente voltar do final da linha para antes da http part ? A combinação Alt B só volta por bloco [a-z], então devo fazer isso para cada diretório na URL. O Ctrl R Espaço é o caminho preferido para voltar? Observe que Ctrl W exclui de volta o espaço em branco anterior, portanto a idéia de <something> until whitespace parece existir.

  2. Como posso excluir de volta o caractere @ da posição atual do cursor ? Pressionando Ctrl W apaga até o espaço em branco, de modo que não ajudará como o caractere @ está enterrado em espaços não brancos. Eu poderia Ctrl R @ e depois Alt D para apagar as palavras até eu chegar para onde eu preciso estar, mas isso é meio obtuso. Não há um comando delete until previous <something> ?

Perceba que estou interessado em aprender como usar a configuração padrão do Bash, já que, na maioria das vezes, eu sou SSH em algum servidor da web. Eu não quero configurar Zsh, atalhos de teclado do Vim ou .bash_profile .

    
por dotancohen 09.01.2014 / 11:48

1 resposta

5
  1. "M-C-]" character-search-backward so M-C-] SPC neste caso irá antes de http

  2. M-C-] @ e, em seguida, C-k para excluir de um ponto até o final da linha (embora pareça que você deseja excluir apenas onde estava antes. Não conheço nenhuma opção melhor que M-d para isso). Que eu saiba, não há delete until previous <something> definido por padrão

O que eu acho muito útil é C-y que "yanks" (cola) o conteúdo do "kill ring". Portanto, quando você executar C-u (excluir do ponto ao início da linha), poderá colá-lo novamente com C-y e pressionar M-y depois que C-y passará pelas outras "mortes" feitas antes ( C-w , C-k etc.)

Também é bom saber que C-/ é undo

Se você quiser saber mais, confira man readline (a linha de leitura é usada pelo Bash), que tem uma seção simples LIGAÇÕES-CHAVE PADRÃO:

       Emacs Standard bindings

       "C-@"  set-mark
       "C-A"  beginning-of-line
       "C-B"  backward-char
       "C-D"  delete-char
       "C-E"  end-of-line
       "C-F"  forward-char
       "C-G"  abort
       "C-H"  backward-delete-char
       "C-I"  complete
       "C-J"  accept-line
       "C-K"  kill-line
       "C-L"  clear-screen
       "C-M"  accept-line
       "C-N"  next-history
       "C-P"  previous-history
       "C-Q"  quoted-insert
       "C-R"  reverse-search-history
       "C-S"  forward-search-history
       "C-T"  transpose-chars
       "C-U"  unix-line-discard
       "C-V"  quoted-insert
       "C-W"  unix-word-rubout
       "C-Y"  yank
       "C-]"  character-search
       "C-_"  undo
       " " to "/"  self-insert
       "0"  to "9"  self-insert
       ":"  to "~"  self-insert
       "C-?"  backward-delete-char

       Emacs Meta bindings

       "M-C-G"  abort
       "M-C-H"  backward-kill-word
       "M-C-I"  tab-insert
       "M-C-J"  vi-editing-mode
       "M-C-M"  vi-editing-mode
       "M-C-R"  revert-line
       "M-C-Y"  yank-nth-arg
       "M-C-["  complete
       "M-C-]"  character-search-backward
       "M-space"  set-mark
       "M-#"  insert-comment
       "M-&"  tilde-expand
       "M-*"  insert-completions
       "M--"  digit-argument
       "M-."  yank-last-arg
       "M-0"  digit-argument
       "M-1"  digit-argument
       "M-2"  digit-argument
       "M-3"  digit-argument
       "M-4"  digit-argument
       "M-5"  digit-argument
       "M-6"  digit-argument
       "M-7"  digit-argument
       "M-8"  digit-argument
       "M-9"  digit-argument
       "M-<"  beginning-of-history
       "M-="  possible-completions
       "M->"  end-of-history
       "M-?"  possible-completions
       "M-B"  backward-word
       "M-C"  capitalize-word
       "M-D"  kill-word
       "M-F"  forward-word
       "M-L"  downcase-word
       "M-N"  non-incremental-forward-search-history
       "M-P"  non-incremental-reverse-search-history
       "M-R"  revert-line
       "M-T"  transpose-words
       "M-U"  upcase-word
       "M-Y"  yank-pop
       "M-\"  delete-horizontal-space
       "M-~"  tilde-expand
       "M-C-?"  backward-kill-word
       "M-_"  yank-last-arg

       Emacs Control-X bindings

       "C-XC-G"  abort
       "C-XC-R"  re-read-init-file
       "C-XC-U"  undo
       "C-XC-X"  exchange-point-and-mark
       "C-X("  start-kbd-macro
       "C-X)"  end-kbd-macro
       "C-XE"  call-last-kbd-macro
       "C-XC-?"  backward-kill-line
    
por 09.01.2014 / 19:31