Como trabalhar com o modo de linha de comando da maneira vi?

10

Existe uma maneira de interagir com o modo de linha de comando, permanecendo sempre na posição inicial?

Em particular, as duas ações a seguir são complicadas, exigindo mover os dedos para longe das teclas de seta e, às vezes, pior, do mouse.

  1. Movendo-se: Existe uma maneira de se mover para frente e para trás no modo de linha de comando enquanto permanece na posição usual?
  2. Como você pode copiar e colar na linha de comando? Quero dizer, copiar tanto de parte da própria linha de comando para outra parte, ou do texto ou até da área de transferência.
Shahbaz
fonte
11
Ambos podem ser resolvidos usando a janela da linha de comandos com :q; Isso abre uma nova "buffer-like" janela, em que você pode usar hjklpara o movimento, ypara arrancar, etc.
Martin Tournoij
11
@Carpetsmoker (você quer dizer q:, certo?) É bom saber! Eu cheguei acidentalmente lá no passado, mas não pensei em usá-lo. Parece que não funciona com /(pesquisa).
Shahbaz
Opa, sim, eu quis dizer q: ... Eu nunca usei muito, então eu não posso lhe dar uma resposta completa / adequada ...
Martin Tournoij

Respostas:

17

Existe a linha de comando (que você conhece) e a janela da linha de comando (a linha de comando em um buffer especial, que você pode editar como qualquer outro). Você entrar neste, quer através <C-f>da linha de comando (também para /pesquisas etc.) quando você sente a necessidade de mais "poder de edição", ou diretamente de modo normal através do dedicado q:, q/etc. comandos.

Leia mais sobre isso em :help command-line-window.

Ingo Karkat
fonte
4
<C-f>é muito útil saber, pois funciona depois que você já está na metade do comando.
Shahbaz
11
Concordo; o :vem quase automaticamente para mim, por isso é bom poder alternar sem voltar ao modo normal.
Ingo Karkat 02/03
11

Além de fornecer a janela da linha de comando , o Vim também oferece alguns recursos limitados, permitindo que você interaja com a linha de comando enquanto estiver no modo de linha de comando ( sem usar as teclas de seta).

Movimento

  • <ctrl-b> mova o cursor para o início da linha de comando
  • <ctrl-e> mova o cursor para o final da linha de comando

Edição

  • <ctrl-h> exclua o caractere antes do cursor (como backspace)
  • <ctrl-w> exclua a palavra antes do cursor
  • <ctrl-u> excluir todo o caminho do cursor de volta ao início da linha de comando

Obviamente, você pode adicionar mapeamentos de linha de comando :cnoremappara emular as teclas de navegação de outros programas . Ou instale o plug - in RSI de Tim Pope para usar as ligações Readline padrão de fato.

Colagem

Você pode colar o conteúdo de qualquer registro na linha de comando na posição do cursor pressionando <ctrl-r>seguido pelo caractere que especifica o registro. por exemplo <ctrl-r>, +irá inserir o conteúdo da área de transferência na linha de comando; <ctrl-r>, "irá inserir o conteúdo do registro "sem nome" (ou seja, o conteúdo da sua última exclusão ou arrancada).

Veja :help cmdline.txtpara mais detalhes de todos os itens acima.

Rico
fonte
11
Impressionante! <ctrl-r>seria particularmente útil.
Shahbaz 03/03
Sim, eu até usei ^Rpara macros. Ele me permitiu executar manipulações super complicadas de texto, puxando parte do arquivo durante a macro e, posteriormente, também durante a macro, usando a parte puxada em um longo comando no modo Ex com ^R. :)
Curinga