Como passo para o final da linha no Vim?


1194

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?


19
Comandos básicos do vim abordados em menos de 10 minutos youtube.com/watch?v=71YTkxUNwmg
— eomeroff

14
O que há de errado em passar alguns minutos executando o vimtutor? Já faz parte da instalação do Vim e mostra o básico.
— Dash-tom-bang

@ dash-tom-bang Bem, eles têm uma pontuação bastante alta aqui ... :) Mas sim, você está certo vimtutoré ótimo. Provavelmente eles não sabiam disso?
— Pryftan 6/01

Respostas:


2051

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.


81
Salte para o último espaço em brancog_
— SergioAraujo

2
Às vezes é mais útil a g_variação, uma vez que não inclui caracteres em branco
— rogercampos

6
A variante _g é realmente útil ao trabalhar no modo visual, pois permite usar a linha sem nenhuma nova linha no final.
— 22712 Greg

2
Enquanto Home e End teclas funcionam em um teclado regular, e ^ são necessários $ quando você estiver usando um laptop :)
— Sridhar Sarnobat

Você deve adicionar ^ à lista.
— Tek

304

Como muitas pessoas disseram:

  • $ leva você até o fim da linha

mas também:

  • ^ou _leva você ao primeiro caractere que não é um espaço em branco na linha e
  • 0(zero) leva você ao início da linha incl. espaço em branco

Eu sabia | nos leva ao início da linha, mas eu não estava ciente de 0. Então, 0 e | faça exatamente a mesma coisa, sim?
— Kamran Bigdely

8
@kami: embora as descrições sejam diferentes, elas parecem se comportar de forma idêntica. No entanto, o |comando pipe pode fazer uma contagem, por exemplo, 3 | para pular para a terceira coluna.
— Paul Ruane

136
  • $ move para o último caractere na linha.
  • 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)


Eu sinto que g_ é a mesma coisa que $ b
— Dave Aaron Smith

3
@DaveAaronSmith: bvai para o início da palavra anterior que não é a mesma coisa. É aproximadamente equivalente a $ge.
— Paul Ruane 29/03

9
Eu uso _e g_para visual / puxar, como $também copiará / excluirá o caractere de nova linha (LN).
— Ernest

Para mim, $ vai para o final da linha de tela atual (quando quebrada). Eu não consegui descobrir o porquê. g_é a única maneira que encontrei para chegar ao final da linha.
— ezuk

O @ezuk $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$?
— Paul Ruane

66

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


3
O análogo a 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).
— wchargin

@charchar verdade, pensei que eu não consigo encontrar o que 0seria o análogo ? (ir para o primeiro carácter (= coluna 0) da linha e ir para o modo de inserção)
— franssu

@ranssu: O único que eu sei é 0i. :-)
— wchargin

@ wchargin - Obrigado pela correção técnica. Eu atualizei a postagem.
— precisa saber é

42

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 .


3
Acabei de descobrir pré-pendentes os comandos para cima e para baixo com g fazer o vim mover o cursor com base na tela, e não na linha. Ou seja, gj e gk permitem mover para cima e para baixo em uma linha longa. Muito útil.
— Druckles

1
Também descobriu que gw digitação e algo parece mudar j e k permanentemente a comportar-se assim. Não sabe como ou por quê. Alguém pode explicar isso?
— Druckles

4
@ Druckles: Um pouco de resposta tardia, mas se você ainda está se perguntando ((ou se alguém mais estiver lendo isso)) 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.
— Pandubear


13

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.


obrigado por esse. Fui querer adicionar Ctrl-e voltar para o meu vim como ir para o fim da linha como na minha primeira máquina e saber não funcionavam como
— tristanbailey

1
Como a resposta aceita diz, você pode pressionar A para fazer a mesma coisa.
— trysis

4
@ análise que você entendeu mal, isso não se afasta do modo de edição, o que é bastante bom.
— Marconi

2
Você está certo. 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).
— trysis

3
Acho que a maneira mais idiomática para mapear isso seriainoremap <C-l> <C-o>A
— bennyty

12

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).


38
O que você está usando no modo de inserção ?! Nenhum cidadão comum decente vai para lá depois do dia. Você sabe o que acontece lá, não é? O código desaparece aí, sabe? Ele desaparece e nunca mais é ouvido.
— Rook

3
Obrigado por isso, pois eu gosto de permanecer no Modo de inserção depois de entrar. Infelizmente, meu laptop não possui uma tecla Encerrar. :(
— ray

12

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.

  • $e 0vá para o final ou o início da linha ou parágrafo físico, respectivamente:
  • g$e g0vá para o final ou o início da linha ou parágrafo da tela, respectivamente.

Se você sempre prefere o último comportamento, pode remapear as chaves assim:

:noremap 0 g0
:noremap $ g$

1
Como chegar ao último espaço não em branco da linha? (quer se trate de uma linha de tela ou linha física)
— Kamran Bigdely

g_é o último espaço não em branco da linha física . E a linha da tela?
— trysis

10

Pressione Apara entrar no modo de edição começando no final da linha.


9

Ou há a resposta óbvia: use a Endtecla para ir até o final da linha.


1
Sim, o terminal mac é um que eu notei que seqüestra chaves e não as repassa para as coisas que estão dentro do terminal. Uma das coisas que me incomoda sempre que uso um mac um pouco.
— davr 31/08

O objetivo principal do uso do vim não é ter que usar chaves como 'End'. Nunca saia da linha de casa.
— 9136 Jon Thoroddsen

7
No Mac, não há tecla Encerrar.
— Kenorb 5/05

1
@kenorb Houve quando publiquei o comentário ... mas a Apple gosta de remover recursos ao longo dos anos. netdna.webdesignerdepot.com/uploads/2009/01/... este é realmente um dos meus teclados favoritos de todos os tempos
— davr

9

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.


6

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.


3

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.


2

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.