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)
b
vai 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.
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, mas 0
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 .
gw
e gq
são comandos que reformatam o texto. (ver :h gw
e :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.
vim
certamente 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 .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.
: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.