Mova o cursor para o final do arquivo no vim

409

Quando eu quero que o cursor vá para o final do arquivo (ou seja, o final da última linha) no Vim, eu tenho que digitar seis teclas:

<ESC>G$a- que se traduz em ESC+ Shiftg+ Shift4+ ano layout do meu teclado.

Como posso fazer isso de forma mais eficiente?

Como trabalho regularmente em muitas máquinas diferentes, nem sempre posso alterar .vimrc, por isso estou procurando respostas sem precisar editar ou criar esse arquivo.

timss
fonte
8
Só quero salientar, os comandos que você está mostrando devem ser representados da seguinte forma:, <esc>G$avocê mostra a mudança colocando a letra em maiúscula. E você mostra um em $vez de shift + 4, pois não importa o teclado, a função dessa tecla ( $) não será alterada, mas se você alterar + 4, o significado poderá mudar. :)
greduan
3
@ Eduan Eu geralmente concordo, mas, neste caso, as teclas pressionadas também são relevantes. Eu adicionei os dois :-)
timss
@ Eduan Para a questão da eficiência, os comandos reais não importam. Os pressionamentos de tecla fazem. E como existem enormes diferenças no layout do teclado entre os idiomas, não sei onde $está o teclado dos EUA, e pode ser que, para os americanos, digitar o comando $seja apenas um toque de tecla. Eu queria mostrar explicitamente que para mim (com um teclado alemão) são duas teclas.
1
@what IC. Eu entendo isso. Só queria salientar isso no futuro, você sabe. :)
greduan

Respostas:

410

Não há necessidade de ir explicitamente para o final da linha antes de fazer a, use A;
Anexar texto no final da linha [contagem] vezes

<ESC>GA

timss
fonte
3
Se você quiser permanecer no modo normal, tente G)(ou <ESC>G)se estiver no modo de inserção e quiser terminar no modo normal com o último caractere). Mesmo número de pressionamentos de tecla, mas para terminar no modo normal em vez do modo de inserção. Acho isso útil ocasionalmente quando quero executar algum comando normal na última palavra, em vez de um comando ou edição no modo de inserção.
Alejandro
1
@Alejandro Embora útil, )avança as [count]frases e, portanto, não vai para o final da linha se, por exemplo, a última linha for This is a test. Foo bar.. Porém, ele funcionará com muito código, o que geralmente não é considerado sentenças e, portanto, termina no final.
timss
Se você planeja escrever a próxima linha, <ESC> G ofará o retorno de carro e o colocará no modo de inserção na próxima linha (no final do arquivo), economizando mais algumas teclas.
Broc.seib 01/03/19
1
Além disso, se você não quiser alternar para o modo de inserção, use G$.
BladeMight 20/09/18
498

Isso é mais rápido. Basta usar isso

:$
Karthik
fonte
16
Isto não ir para a última coluna só para a última linha
Rajeshwar
6
Se você quiser ir rapidamente até o final do arquivo e os atalhos do teclado estiverem danificados, este é o comando certo. Obrigado!
Joemar.ct
9
: $ + End faria nesse caso.
Kart,
1
Isso requer <ENTER> no final e ainda é necessário chegar ao final da linha, o que não o torna mais rápido.
Alejandro
1
: $ faz o truque! indo para o final do arquivo como a pergunta! obrigado
Sijan Shrestha
130

Pressione Esce pressione: Shift+G

Mohamed Ayoub BENJELLOUN
fonte
3
Isso vai para o início da última linha, não para o final do arquivo.
Jordan Running
5
isso vai para o final do arquivo para mim e também é um bom teclado fácil #
Jacob Garby
G mantém o número da coluna o mesmo (se possível) e passa para a última linha. Jacob provavelmente estava no fim da fila e Jordan na frente ao executar o comando.
run_the_race
39

Para iniciantes, não há necessidade de retorno. G$vai fazer. E você está sendo enganoso contando <Esc>ea no comprimento de um comando no modo normal.

No entanto, você pode usar Ctrl+ Endse quiser.

hobbs
fonte
8
éCtrl-END
Zmo
Eu não tenho End-Key no teclado (se é isso que você quer dizer).
Na verdade, a resposta por mostras TIMSS que eu fiz bem para contar <ESC>e a, porque ele ou ela sabia de uma forma de substituir Shift+$, acom A.
1
@what mais teclado portátil hoje em dia têm home / put fim em cima / baixo / esquerda / direita junto com Fn se eles não têm teclas home / end dedicados
phuclv
22

Eu pensei que a pergunta era "Mover o cursor para o final do arquivo no vim"?

Fim do arquivo: Esc+ G
Início do arquivo Esc+ g(ou ggse você já estiver na área de comando)

AlexD
fonte
21

A melhor maneira de ir para a última linha do arquivo é com G. Isso moverá o cursor para a última linha do arquivo.

A melhor maneira de ir para a última coluna da linha é com $. Isso moverá o cursor para a última coluna da linha atual.

Então, basta G$você chegar ao final do arquivo e à última linha.

E se você quiser entrar no modo de inserção no final do arquivo, basta fazê-lo GA. Ao fazer isso, você vai para a última linha do arquivo e entra no modo de inserção anexando à última coluna. :)

greduan
fonte
13

Ir para o topo - Duplo g

Vá para a parte inferior - Shift+g

fuat
fonte
1
Excelente. Funciona no Mac também.
Bishwas Mishra
11

Se você planeja escrever a próxima linha, ESCGofará o retorno de carro e o colocará no modo de inserção na próxima linha (no final do arquivo), economizando mais algumas teclas.

broc.seib
fonte
6
  • Ctrl + Home = Ir para o início do arquivo
  • Ctrl + End = Ir para o final do arquivo
Gili
fonte
3

Isso é mais rápido:

<ESC>GA
cforbish
fonte
5
Por que postar uma resposta duplicada, especialmente quando ela não explica A?
timss
3

Você pode mapeá-lo para uma chave, por exemplo, F3, em .vimrc

inoremap <F3> <Esc>GA
Tim
fonte
2
Embora possível, isso geralmente é uma má ideia. Em vez disso, almeje a memória muscular e use GAou G$.
timss
No entanto, ainda estou ganhando com um toque de tecla :) Em uma observação mais séria, se você realmente precisa de algo rápido no vim, aprender como .vimrc é útil.
Tim
Também seria bom ter um exemplo de mapa completo em vez de pedir ao OP para procurá-lo. Desde que, se você não consegue encontrá-lo, como o OP deve?
precisa saber é
1
Você não está "ganhando" nada, pois teria que se afastar da sua casa. Além disso, você não pode usar isso na configuração de alguém ou mesmo no vi, se você usá-lo. Você realmente não está economizando tempo. Se alguma coisa, use C-endcomo mencionado por hobbs.
timss
Concordo com os comentários aqui, mas limpei o mapeamento para você
D. Ben Knoble 27/12/19
0

Eu tenho procurado a maneira de mover o cursor para o final de uma linha e, em seguida, editar em um terminal Mac, eis como ele funcionou para mim. Saia do modo de edição, digite g_ (que é 'g' e sublinhe sem dois pontos na frente) e pressione a tecla 'a' para que você possa "adicionar" código aos seus scripts

Xinyi Xiang
fonte
Talvez você estivesse procurando A?
D. Ben Knoble
Eu tentei A, mas não deu muito certo
Xinyi Xiang
isso é estranho, Aé basicamente equivalente a$a
D. Ben Knoble
0

Outra alternativa:

:call cursor('.',strwidth(getline('.')))

Isso pode ser útil se você estiver escrevendo uma função. Outra situação seria quando eu preciso abrir um modelo específico e pular para o final da primeira linha, eu posso fazer:

vi +"call cursor('.',strwidth(getline(1)))"  notetaking_template.txt

O acima também poderia ser feito com

vi +"execute ':normal! $'" notetaking_template.txt

Veja também:

vim - Obtém o comprimento da linha atual

Sergiy Kolodyazhnyy
fonte
0

Se você deseja colar algum conteúdo da área de transferência no final do tipo de arquivo:

:$ put +

$ ............ last line
put .......... paste 
+ ............ clipboard
SergioAraujo
fonte