Enquanto estiver no modo de inserção no Vim, existe alguma maneira de percorrer o texto movendo alguns caracteres para frente e para trás, além de usar as teclas de seta?
Se eu pressionar h, j, ke lenquanto no modo de Inserção, os personagens reais são impressos na tela em vez de mover através do texto.
O jeito que estou fazendo isso no momento é ter que recorrer a Ctrl+ [( Esc) e percorrer o texto; mas obviamente isso não é produtivo.
imap jk <Esc>
), para que você não precise interromper o impulso e estender a mão pelo teclado para pressionar a tecla.<ESC>
) mapeado emkj
vez dejk
; meu amigo Dijkstra é o culpado!jk
ekj
, então, eu apenas pressiono como um botão grande com dois dedos e não importa a ordem em que estou de volta ao normal.Respostas:
Você parece abusar do vim, mas é provável que não esteja muito familiarizado com ele.
O caminho certo é pressionar Esc, ir onde você deseja fazer uma pequena correção, corrigi-la, voltar e continuar editando. É eficaz porque o Vim tem muito mais movimentos do que o caractere usual para frente / para trás / para cima / para baixo. Depois que você aprender mais deles, isso será mais produtivo.
Aqui estão alguns casos de uso:
Porém, se você ainda deseja fazer pequenos percursos de texto sem sair do modo de inserção, siga as orientações de rson e use + . Tomando o primeiro exemplo que mencionei acima, + o moverá para um caractere "f" anterior e o deixará no modo de inserção.CtrlOCtrlOFf
fonte
Ctrl+o
para emitir um único comando no modo normal. Às vezes, isso pode levá-lo aonde você quer estar, principalmente quando combinado com os comandos de movimento t / T ef / F.:h ins-special-keys
.ctrl-h
: backspace,:ctrl-w
delete word,:ctrl-u
delete para o início da linhaalt-b
,: retorna uma palavra.Enquanto estiver no modo de inserção , use CtrlOpara ir para o modo normal com apenas um comando:
que é provavelmente a maneira mais simples de fazer o que você quer e é fácil de lembrar.
Outras teclas de controle muito úteis no modo de inserção:
isso eliminará muitos comutadores desnecessários de volta ao modo normal.
fonte
Modo de inserção
Movimento
hjkl
Não obstante o que Pavel Shved disse - que provavelmente é mais aconselhável se acostumar com o Escmodo Insert - aqui está um exemplo de conjunto de mapeamentos para navegação rápida no modo Insert:
Isso fará com que Alt+ hno modo Inserir passe um caractere para a esquerda, Alt+ jpara baixo e assim por diante, analogamente ao hjklmodo Normal.
Você precisa copiar esse código no seu arquivo vimrc para carregá-lo toda vez que iniciar o vim (você pode abri-lo digitando
:new $myvimrc
começando no modo Normal).Qualquer movimento no modo Normal
Como a Alttecla modificadora não está mapeada (para algo importante) por padrão, você pode puxar da mesma maneira outras funcionalidades (ou todas) do modo Normal para o modo Inserir. Por exemplo:
movendo para o início da palavra atual com Alt+ b:
(Outros usos Altno modo Inserir)
Vale ressaltar que pode haver usos melhores para a Altchave do que replicar o comportamento no modo Normal: por exemplo, aqui estão os mapeamentos para copiar de uma linha adjacente a parte da coluna atual até o final da linha:
(Usei a
\
continuação e o recuo da linha para aumentar a clareza - os comandos são interpretados como se estivessem escritos em uma única linha.)Teclas de atalho incorporadas para edição
(Não há teclas de atalho embutidas para movimento no modo Inserir.)
Referência:
:help insert-index
Modo de linha de comando
Esse conjunto de mapeamentos disponibiliza os movimentos superiores Alt+ na linha de comando:hjkl
Como alternativa, esses mapeamentos adicionam os movimentos ao modo Inserir e ao modo de linha de comando de uma só vez:
Os comandos de mapeamento para puxar os comandos do modo Normal para o modo de linha de comando são um pouco diferentes dos comandos de mapeamento do modo de inserção (porque o modo de linha de comando não possui o Ctrl+ do modo de inserção O):
Teclas de atalho incorporadas para movimento e edição
Referência:
:help ex-edit-index
fonte
Alt
chave?Se você é um purista do vim, pule a leitura desta resposta. OTOH, se você é novo no vim e está procurando algumas dicas úteis que você não encontrará nas centenas de tutoriais e blogs do vim, continue lendo ... :-)
Algumas maneiras não ortodoxas (vim)
Estamos em 2014 e, como alguém que voltou recentemente,
vim
posso oferecer alguns pontos de vista e dicas potencialmente contrários.Use shift + esquerda ou shift + direita para percorrer as palavras
Embora a repetição seja um conceito poderoso no vim, eu (pessoalmente) acho estranho que usá-la me force a contar (linhas, caracteres, palavras, etc.) ou fazer palpites. Meu cérebro geralmente funciona como "eu quero o cursor lá " e não como "eu quero o cursor _5_words_to_the_left_". Ser capaz de mover rapidamente o cursor e observar visualmente onde o ponto de inserção dessa maneira me permite manter minha mente no que estou editando, em vez de ter que contar quantos saltos preciso fazer para chegar onde preciso editar.
Ative o modo mouse e use a roda do mouse e clicando em
... para navegar por grandes corpos de texto.
A maioria dos computadores (todos) modernos possui um touchpad que está intimamente integrado ao teclado (por exemplo, MacBooks). Os designers industriais passaram muitos anos aperfeiçoando esses designs, de modo que o velho problema de ter que afastar a mão do teclado não é mais um problema real. Ok, é se você está acostumado a um mouse e não gosta de mudar, mas para alguém novo no vim (como aqueles que podem encontrar este post por meio de uma pesquisa), isso não deve ser um problema.
Como bônus, clique + arrastar coloca você no modo visual
Com o mouse ativado, clicar e arrastar tem o efeito de alternar para o modo visual e marcar uma região para puxar.
E use a roda de rolagem
Usar o mouse (roda) para rolar e clicar para posicionar o cursor (duh) funciona. Consulte http://usevim.com/2012/05/16/mouse/ para obter mais informações.
E entao...
Estes são o que eu chamaria de formas mais modernas (usando mouse, roda de rolagem etc.) de navegar no vim, igualmente eficazes, dependendo da sua preferência de entrada.
HTH
fonte
Muitas pessoas na comunidade Vim argumentam que você não deve navegar no modo Inserir, que não é o caminho do Vim. Eu acho que esse é um sentimento incorreto, aprendido ao fazer a transição dos editores padrão para o Vim.
O Vim é mais poderoso quando você usa suas ferramentas para criar ações ou descobertas atômicas e repetíveis.
Não há problema em navegar no modo Inserir se você estiver corrigindo um erro cometido na mesma sessão Inserir. Você não deve navegar fora do intervalo de texto modificado.
Se você cometer um erro ao inserir texto e sair do modo Inserir para corrigi-lo, não poderá repetir a ação pretendida,
.
repetirá a correção.O Vim suporta muitas teclas de navegação no modo Inserir. Obviamente, existem as teclas de seta Home e End, mas também existem muitos outros atalhos. Veja
:h ins-special-keys
.fonte
No GVim, você pode usar o mouse. Mas, honestamente, o que há de errado em usar as teclas de seta? Há uma razão pela qual eles estão em um teclado.
fonte
Para ter uma navegação um pouco melhor no modo de inserção, por que não mapear algumas teclas?
Se você puder trabalhar para que a tecla Meta funcione no seu terminal, poderá zombar ainda mais do modo emacs. A navegação no modo normal é muito melhor, mas para movimentos mais curtos, ajuda a permanecer no modo de inserção.
Para saltos mais longos, prefiro a seguinte tradução padrão:
Isso muda para o modo normal e retorna uma palavra
fonte
Acredito Homee End(e PageUp/ PageDn) também funcionam normalmente no modo de inserção, mas além disso, não acredito que haja outras chaves padrão definidas para a passagem de texto.
fonte
Desculpe, mas o vim não funciona dessa maneira.
Você deve alternar para o modo "normal", navegar e depois voltar a inserir novamente.
fonte
Você pode criar mapeamentos que funcionam no modo de inserção. A maneira de fazer isso é via inoremap. Observe o 'i' no início do comando (o noremap é útil para evitar colisões com os principais mapas). O corolário é 'n' para o modo 'normal'. Você pode supor que o vim acha que é 'normal';)
No entanto, você realmente deseja navegar no texto usando o modo 'normal'. O Vim é excelente nesse tipo de coisa e todo esse poder está disponível no modo normal. O Vim já oferece maneiras fáceis de passar do modo normal para o modo de inserção (por exemplo, i, I, a, A, o, O). O truque é facilitar o acesso ao modo normal. A maneira de fazer isso é remapear a fuga para uma chave mais conveniente. Mas você precisa de um que não entre em conflito com sua digitação regular. Eu uso:
Como jj (que é 2j digitado um após o outro rapidamente) não parece aparecer no meu vocabulário. Outros vão remapear para onde é confortável.
A outra mudança essencial que faço é alternar as teclas CAPSLOCK e CONTROL no meu teclado (usando a configuração do teclado do computador host), já que quase nunca uso o CAPSLOCK e ele tem esse botão grande e bonito exatamente onde eu quero. (Isso é comum para os usuários do Emacs. A desvantagem é quando você se encontra em um teclado 'não corrigido'! Aaarggh!)
Depois de remapear o CAPSLOCK, você pode usar confortavelmente os seguintes remapeamentos no modo de inserção:
Tendo em mente que algumas chaves já estão mapeadas no modo de inserção (backwards-kill-word é Cw (Control-w) por padrão, você já deve ter as ligações desejadas.Portanto, eu prefiro o Ch no meu .vimrc :
MAS, você provavelmente deseja o mesmo espasmo de memória muscular no modo normal, então também mapeio Ch como:
(d) elete (b) ackwards realiza a mesma coisa com o mesmo acorde de teclas. Esse tipo de edição rápida é um que considero útil na prática para erros de digitação. Mas atenha-se ao modo normal para se movimentar no texto e algo mais do que matar a palavra anterior. Quando você adquirir o hábito de alterar os modos (usando um remapeamento, é claro), será muito mais eficiente do que o remapeamento do modo de inserção.
fonte
Você pode usar
imap
para mapear qualquer tecla no modo de inserção para uma das teclas do cursor. Igual a:Agora h funciona como no modo normal, movendo o cursor. (Mapear h dessa maneira é obviamente uma má escolha)
Dito isto, não acho que a maneira padrão de se movimentar no texto usando o VIM "não seja produtiva". Existem muitas maneiras muito poderosas de percorrer o texto no modo normal (como usar w e b, ou / e?, Ou f e F, etc.)
fonte
Para alguns movimentos e ações usados com freqüência, eu defini os seguintes mapeamentos. Isso economiza um pressionamento de tecla comparado à combinação CTRL + O e, como eu preciso deles com frequência, eles são recompensados a longo prazo.
fonte