Przesuń kursor na koniec pliku w vimie


409

Kiedy chcę, aby kursor znalazł się na końcu pliku (tj. Na końcu ostatniej linii) w Vimie, muszę wpisać sześć naciśnięć klawiszy:

<ESC>G$a- co przekłada się na ESC+ Shiftg+ Shift4+ ana moim układzie klawiatury.

Jak mogę to zrobić bardziej efektywnie?

Ponieważ regularnie pracuję na wielu różnych komputerach, nie zawsze mogę zmienić plik .vimrc, dlatego szukam odpowiedzi bez konieczności edytowania lub tworzenia tego pliku.


8
Chciałbym tylko zaznaczyć, że wyświetlane polecenia powinny być reprezentowane w następujący sposób: <esc>G$aprzesunięcie jest wyświetlane wielkimi literami. I wyświetlasz $zamiast shift + 4, ponieważ bez względu na klawiaturę funkcja tego klawisza ( $) nie zmieni się, ale jeśli wykonasz shift + 4, to znaczenie może się zmienić. :)
greduan

3
@Eduan Zasadniczo się zgadzam, ale w tym przypadku istotne są również naciśnięcia klawiszy. Dodałem oba :-)
timss

@Eduan W kwestii wydajności rzeczywiste polecenia nie mają znaczenia. Klawisze działają. A ponieważ istnieją ogromne różnice w układzie klawiatury między językami, nie wiem, gdzie $jest klawiatura amerykańska, i może być tak, że dla Amerykanów polecenie $to tylko jednym naciśnięciem klawisza. Chciałem wyraźnie pokazać, że dla mnie (z niemiecką klawiaturą) są to dwa naciśnięcia klawiszy.

1
@ what what IC. Mogę to zrozumieć. Chciałem tylko to podkreślić, więc w przyszłości wiesz. :)
greduan

Odpowiedzi:


410

Nie musisz jawnie iść do końca linii przed zrobieniem a, użyj A;
Dołącz tekst na końcu wiersza [liczba] razy

<ESC>GA


3
Jeśli chcesz pozostać w trybie normalnym, spróbuj G)(lub <ESC>G)jeśli jesteś w trybie wstawiania i chcesz zakończyć tryb normalny nad ostatnim znakiem). Ta sama liczba naciśnięć klawiszy, ale kończy się w trybie normalnym zamiast w trybie wstawiania. Przydaje mi się to czasami, gdy chcę uruchomić normalne polecenie dla ostatniego słowa zamiast polecenia trybu edycji lub edycji.
Alejandro

1
@Alejandro Chociaż jest użyteczny, )przesuwa się o [count]zdania do przodu i dlatego nie przejdzie do końca linii, jeśli na przykład ostatnia linia jest This is a test. Foo bar.. Będzie jednak działał dla wielu kodów, które często nie są uważane za zdania i dlatego i tak kończą się.
timss

Jeśli planujesz napisać następny wiersz, <ESC> G ozrobi powrót karetki i przejdzie w tryb wstawiania w następnym wierszu (na końcu pliku), oszczędzając jeszcze kilka naciśnięć klawiszy.
broc.seib

1
Również jeśli nie chcesz przejść do trybu wstawiania, użyj G$.
BladeMight

498

To jest szybsze. Po prostu użyj tego

:$

16
To nie przechodzi do ostatniej kolumny tylko do ostatniej linii
Rajeshwar

6
Jeśli chcesz szybko przejść do końca pliku, a skróty klawiaturowe są pomieszane, jest to właściwe polecenie. Dzięki!
joemar.ct,

9
: $ + End zrobiłby to w takim przypadku.
karthik

1
Wymaga to <ENTER> na końcu, a także wciąż musi dotrzeć do końca linii, co sprawia, że ​​nie jest szybszy.
Alejandro

1
: $ załatwia sprawę! przechodzę do końca pliku jako zadane pytanie! dzięki
Sijan Shrestha

130

Naciśnij, Esca następnie naciśnij: Shift+G


3
To przechodzi na początek ostatniego wiersza, a nie na koniec pliku.
Jordan Running

5
dla mnie jest to koniec pliku i jest to również całkiem łatwe klawisze
Jacob Garby

G utrzymuje ten sam numer kolumny (jeśli to możliwe) i przechodzi do ostatniego wiersza. Jacob był prawdopodobnie na końcu linii, a Jordan na froncie, gdy wykonywał polecenie.
run_the_race

39

Na początek nie ma potrzeby zwrotu. G$zrobi. Wprowadzasz w błąd, licząc <Esc>i awydając polecenie w trybie normalnym.

Możesz jednak użyć Ctrl+, Endjeśli chcesz.


8
jestCtrl-END
zmo

Nie mam Endklawisza na klawiaturze (jeśli o to ci chodzi).

Właściwie odpowiedź przez TIMSS pokazuje, że zrobiłem dobrze liczyć <ESC>i a, ponieważ on lub ona wiedziała o sposób zastąpienia Shift+$, az A.

1
@ co większość klawiatur laptopów ma obecnie home / end w górę / dół / lewo / prawo wraz z Fn, jeśli nie mają dedykowanych klawiszy home / end
phuclv

22

Myślałem, że pytanie brzmi: „Przenieś kursor na koniec pliku w vimie”?

Koniec pliku: Esc+ G
Początek pliku Esc+ g(lub ggjeśli jesteś już w obszarze poleceń)


21

Najlepszym sposobem na przejście do ostatniej linii pliku jest G. Spowoduje to przesunięcie kursora do ostatniego wiersza pliku.

Najlepszym sposobem na przejście do ostatniej kolumny w linii jest $. Spowoduje to przesunięcie kursora do ostatniej kolumny bieżącego wiersza.

W ten sposób G$dochodzisz do końca pliku i do ostatniego wiersza.

A jeśli chcesz przejść do trybu wstawiania na końcu pliku, po prostu to zrobisz GA. W ten sposób przejdziesz do ostatniego wiersza pliku i przejdziesz do trybu wstawiania, dołączając do ostatniej kolumny. :)



11

Jeśli planujesz napisać następny wiersz, ESCGozrobi powrót karetki i przejdzie w tryb wstawiania w następnym wierszu (na końcu pliku), oszczędzając jeszcze kilka naciśnięć klawiszy.


6
  • Ctrl + Home = Przejdź do początku pliku
  • Ctrl + End = Przejdź na koniec pliku

3

To jest szybsze:

<ESC>GA

5
Po co publikować duplikaty odpowiedzi, zwłaszcza jeśli nie wyjaśniają A?
timss

3

Możesz zamapować go na klucz, na przykład F3, w .vimrc

inoremap <F3> <Esc>GA

2
Chociaż jest to możliwe, jest to ogólnie zły pomysł. Zamiast tego celuj w pamięć mięśni i użyj GAlub G$.
timss

Nadal wygrywam jednym naciśnięciem klawisza :) Mówiąc poważniej, jeśli naprawdę potrzebujesz czegoś w vimie, przydatne jest nauczenie się .vimrc.
Tim

Dobrze byłoby też mieć pełny przykład mapy, zamiast mówić PO, żeby poszedł to sprawdzić. Ponieważ jeśli nie możesz tego znaleźć, to jak ma OP?
FDinoff,

1
Nic nie „wygrywasz”, ponieważ musiałbyś odejść od domu. Dodatkowo, nie możesz tego użyć na czyimś configu, a nawet vi, jeśli zdarzy ci się go użyć. Naprawdę nie oszczędzasz czasu. Jeśli cokolwiek, użyj, C-endjak wspomniano przez hobbs.
timss

Zgadzam się z komentarzami tutaj, ale wyczyściłem dla ciebie mapowanie
D. Ben Knoble

0

Szukałem sposobu, aby przesunąć kursor na koniec linii, a następnie edytować na terminalu Mac, oto jak to dla mnie działało. Wyjdź z trybu edycji, wpisz g_ (to jest „g”, a następnie podkreśl podkreślenie bez dwukropka z przodu), a następnie po prostu naciśnij klawisz „a”, abyś mógł „dodać” kod do swoich skryptów


A może szukasz A?
D. Ben Knoble,

Próbowałem A, ale nie całkiem zadziałało
Xinyi Xiang

to dziwne, Ajest w zasadzie równoważne z$a
D. Ben Knoble

0

Inna alternatywa:

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

Może to być przydatne, jeśli piszesz funkcję. Inną sytuacją byłoby, gdy muszę otworzyć konkretny szablon i przejść do końca pierwszej linii, mogę:

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

Można to również zrobić z powyższym

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

Zobacz też:

vim - Uzyskaj długość bieżącej linii


0

Jeśli chcesz wkleić zawartość schowka na końcu typu pliku:

:$ put +

$ ............ last line
put .......... paste 
+ ............ clipboard
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.