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?
vimtutoré ótimo. Provavelmente eles não sabiam disso?
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?
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.
g_
g_variação, uma vez que não inclui caracteres em branco
Como muitas pessoas disseram:
mas também:
|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)
bvai para o início da palavra anterior que não é a mesma coisa. É aproximadamente equivalente a $ge.
_e g_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 para g$?
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.
Inão é 0senão ^, como ambos, Ie ^vai para o primeiro caractere que não seja um espaço em branco da linha, mas 0vai para a coluna zero (como o próprio nome indica).
0seria 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 .
gwe gqsão comandos que reformatam o texto. (ver :h gwe :h gq) O que provavelmente aconteceu foi que você fez gw{motion}e alterou algum texto para que as linhas da tela correspondessem às linhas reais.
O cifrão: $
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 :
imap <C-l> <Esc>$a
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.
vimcertamente permite que você faça muito mais em muito menos tempo com coisas assim. @razorxpress, um pequeno ajuste seria imap <C-l> <Esc>A, o que torna Ctrl + l o equivalente a pressionar Esc(sair do modo de inserção) e depois A(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).
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:
:noremap 0 g0
:noremap $ g$
g_é o último espaço não em branco da linha física . E a linha da tela?
Ou há a resposta óbvia: use a Endtecla para ir até o final da linha.
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):
fn+ ← - mover para a linha inicial
fn+ → - mover para a linha final
fn+ ↑ - mover a página para cima
fn+ ↓ - mover a página para baixo
fn+ g - move o cursor para o início do documento
fn+ shift + g - move o cursor para o final do documento
Nos últimos dois comandos, em algum momento, é necessário tocar duas vezes.
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 .vimrclinhas 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.
:imap <Char-1> <Char-15>:normal 0<Char-13>
:imap <Char-4> <Char-15>:normal $<Char-13>
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.