Eu sei como geralmente me movo no modo de comando, especificamente, pulando para linhas, etc. Mas qual é o comando para pular para o final da linha em que estou atualmente?
vim
editor
keyboard-shortcuts
vi
salt.racer
fonte
fonte
vimtutor
é ótimo. Provavelmente eles não sabiam disso?Respostas:
Apenas a tecla $ (cifrão) . Você pode usar Apara ir para o final da linha e mudar para o modo de edição (Anexar). Para saltar o último caractere não-branco, você pode pressionar gentão _chaves.
O oposto de Aé I(modo Inserir no início da linha), como um aparte. Pressionar apenas o ^posicionará o cursor no primeiro caractere não-branco da linha.
fonte
g_
g_
variação, uma vez que não inclui caracteres em brancoComo muitas pessoas disseram:
mas também:
fonte
|
comando pipe pode fazer uma contagem, por exemplo, 3 | para pular para a terceira coluna.g _ vai para o último caractere que não é um espaço em branco.
g $ vai para o final da linha da tela (quando uma linha de buffer é quebrada em várias linhas da tela)
fonte
b
vai para o início da palavra anterior que não é a mesma coisa. É aproximadamente equivalente a$ge
._
eg_
para visual / puxar, como$
também copiará / excluirá o caractere de nova linha (LN).g_
é a única maneira que encontrei para chegar ao final da linha.$
vai para o final da linha mesmo quando embrulhado para mim. Não conheço nenhuma configuração para ajustar seu comportamento. Talvez tenha sido remapeado pelo seu .vimrc parag$
?A principal questão - fim de linha
$ vai para o final da linha, permanece no modo de comando
A vai para o final da linha, alterna para o modo de inserção
Inversamente - início da linha (tecnicamente o primeiro caractere que não é um espaço em branco )
^ vai para o início da linha, permanece no modo de comando
I (i maiúsculo) vai para o início da linha, alterna para o modo de inserção
Além disso - início da linha (tecnicamente a primeira coluna, independentemente do espaço em branco )
0 (zero) vai para o início da linha, permanece no modo de comando
0i (zero seguido de i minúsculo) passa o início da linha, alterna para o modo de inserção
Para quem está começando a aprender o vi, aqui está uma boa introdução ao vi, listando lado a lado os comandos do vi para o movimento típico do cursor do Windows GUI Editor e as teclas de atalho.
editor vi para usuários do Windows
fonte
I
não é0
senão^
, como ambos,I
e^
vai para o primeiro caractere que não seja um espaço em branco da linha, mas0
vai para a coluna zero (como o próprio nome indica).0
seria o análogo ? (ir para o primeiro carácter (= coluna 0) da linha e ir para o modo de inserção)0i
. :-)Se a sua linha atual passa a tela visível para a próxima linha, você pode usar g $ para chegar ao final da linha da tela .
fonte
gw
egq
são comandos que reformatam o texto. (ver:h gw
e:h gq
) O que provavelmente aconteceu foi que você fezgw{motion}
e alterou algum texto para que as linhas da tela correspondessem às linhas reais.O cifrão: $
fonte
Em muitos casos, quando estamos dentro de uma string, estamos entre aspas duplas ou enquanto escrevemos uma declaração, não queremos pressionar escape e ir para o final dessa linha com a tecla de seta e pressionar o ponto e vírgula (
;
) apenas para finalizar a linha. Escreva a seguinte linha dentro do seu arquivo vimrc :O que a linha diz? Ele mapeia Ctrl + l para uma série de comandos. É equivalente a você pressionar Esc(modo de comando), $(fim da linha), a(anexar) de uma só vez.
fonte
vim
certamente permite que você faça muito mais em muito menos tempo com coisas assim. @razorxpress, um pequeno ajuste seriaimap <C-l> <Esc>A
, o que torna Ctrl + l o equivalente a pressionarEsc
(sair do modo de inserção) e depoisA
(anexar ao final da linha).inoremap <C-l> <C-o>A
A vantagem da tecla 'End' é que ela funciona nos modos normal e de inserção.
'$' funciona apenas no modo normal / comando, mas também no editor vi clássico (é bom saber quando o vim não está disponível).
fonte
Observe também a distinção entre linha (ou talvez linha física) e linha da tela . Uma linha é finalizada pelo caractere Fim da Linha ("\ n"). Uma linha da tela é o que quer que seja mostrado como uma linha de caracteres no seu terminal ou na sua tela. Os dois se separam se você tiver linhas físicas maiores que a largura da tela, o que é muito comum ao escrever e-mails.
A distinção também aparece nos comandos de fim de linha.
Se você sempre prefere o último comportamento, pode remapear as chaves assim:
fonte
g_
é o último espaço não em branco da linha física . E a linha da tela?Pressione Apara entrar no modo de edição começando no final da linha.
fonte
Ou há a resposta óbvia: use a Endtecla para ir até o final da linha.
fonte
Não consigo ver as teclas de atalho do macbook para usar o vim no terminal padrão. Espero que ajude alguém. Para usuários do macOS (testado no macbook pro 2018):
Nos últimos dois comandos, em algum momento, é necessário tocar duas vezes.
fonte
Possivelmente não relacionado, mas se você deseja iniciar uma nova linha após a linha atual, pode usar o em qualquer lugar da linha.
fonte
A opção mais fácil seria digitar $. Se você estiver trabalhando com blocos de texto, poderá apreciar o comando {e }para mover um parágrafo para frente e para trás, respectivamente.
fonte
Eu estava acostumado ao Home / End, levando-me ao início e ao fim das linhas no modo Inserir (do uso no Windows e acho que no Linux), que o Mac não suporta. Isso é particularmente irritante porque, quando estou usando o vim em um sistema remoto, também não consigo fazer isso facilmente. Após algumas tentativas e erros dolorosos, criei essas
.vimrc
linhas que fazem a mesma coisa, mas vinculei a Ctrl-A para o início da linha e Ctrl-D para o final da linha. (Por algum motivo, acho que Ctrl-E é reservado ou, pelo menos, não consegui descobrir uma maneira de vinculá-lo.) Aproveite.Há um bom gráfico aqui para os códigos de caracteres de controle ASCII aqui para outros também:
http://www.physics.udel.edu/~watson/scen103/ascii.html
Você também pode usar Ctrl-V + Ctrl-, mas isso também não se cola a lugares como este.
fonte