Pindahkan kursor ke akhir file dalam vim

409

Ketika saya ingin kursor pergi ke akhir file (yaitu akhir dari baris terakhir) di Vim, saya harus mengetik enam penekanan tombol:

<ESC>G$a- yang diterjemahkan menjadi ESC+ Shiftg+ Shift4+ apada tata letak keyboard saya.

Bagaimana saya bisa melakukan ini dengan lebih efisien?

Karena saya secara teratur bekerja pada banyak mesin yang berbeda, saya tidak selalu dapat mengubah .vimrc, jadi saya mencari jawaban tanpa harus mengedit atau membuat file itu.

timss
sumber
8
Hanya ingin menunjukkan, perintah yang Anda tampilkan harus direpresentasikan sebagai berikut:, <esc>G$aAnda menunjukkan perubahan dengan membuat huruf besar. Dan Anda menunjukkan $alih - alih shift + 4, karena keyboard apa pun fungsi tombol ini ( $) tidak akan berubah, tetapi jika Anda menggeser + 4 maka artinya dapat berubah. :)
greduan
3
@Eduan Saya umumnya setuju, tetapi dalam hal ini penekanan tombol yang sebenarnya juga relevan. Saya menambahkan keduanya :-)
timss
@Eduan Untuk pertanyaan efisiensi, perintah yang sebenarnya tidak masalah. Lakukan penekanan tombol. Dan karena ada perbedaan besar dalam tata letak keyboard antara bahasa, saya tidak tahu di mana letak $keyboard AS, dan mungkin bagi orang Amerika yang memasukkan perintah $hanya satu keystroke. Saya ingin secara eksplisit menunjukkan bahwa bagi saya (dengan keyboard Jerman) itu adalah dua penekanan tombol.
1
@ apa IC. Saya bisa mengerti itu. Hanya ingin menunjukkannya jadi di masa depan lho. :)
greduan

Jawaban:

410

Tidak perlu secara eksplisit menuju akhir sebelum melakukan a, gunakan A;
Tambahkan teks pada akhir baris [hitung] kali

<ESC>GA

timss
sumber
3
Jika Anda ingin tetap dalam mode normal coba G)(atau <ESC>G)jika Anda berada dalam mode insert dan ingin berakhir dalam mode normal di atas karakter terakhir). Jumlah penekanan tombol yang sama, tetapi berakhir dalam mode normal, bukan mode insert. Saya menemukan ini berguna sesekali ketika saya ingin menjalankan beberapa perintah normal pada kata terakhir alih-alih perintah mode edit atau edit.
Alejandro
1
@Alejandro Sementara berguna, )bergerak pada [count]kalimat ke depan dan karena itu tidak akan pergi ke akhir baris jika misalnya baris terakhir adalah This is a test. Foo bar.. Ini akan bekerja untuk banyak kode, yang sering kali tidak dianggap sebagai kalimat dan karenanya akan berakhir.
timss
Jika Anda berencana untuk menulis baris berikutnya, <ESC> G oakan melakukan carriage return dan menempatkan Anda dalam mode insert di baris berikutnya (di akhir file), menyimpan beberapa penekanan tombol lagi.
broc.seib
1
Juga jika Anda tidak ingin beralih ke mode penggunaan insert G$.
BladeMight
498

Ini lebih cepat. Gunakan ini saja

:$
karthik
sumber
16
Ini tidak bergerak ke kolom terakhir hanya ke baris terakhir
Rajeshwar
6
Jika Anda hanya ingin cepat pergi ke akhir file dan pintasan keyboard Anda kacau, ini adalah perintah yang tepat. Terima kasih!
joemar.ct
9
: $ + End akan melakukannya dalam kasus itu.
karthik
1
Ini membutuhkan <ENTER> di akhir dan juga masih perlu sampai ke akhir baris yang membuatnya tidak lebih cepat.
Alejandro
1
: $ lakukan triknya! pergi ke akhir file sebagai pertanyaan yang diajukan! terima kasih
Sijan Shrestha
130

Tekan Esclalu tekan: Shift+G

Mohamed Ayoub BENJELLOUN
sumber
3
Ini pergi ke awal baris terakhir, bukan akhir file.
Jordan Running
5
ini pergi ke akhir file untuk saya , dan merupakan keybind mudah juga
Jacob Garby
G menjaga nomor kolom sama (jika mungkin) dan bergerak ke baris terakhir. Yakub mungkin berada di ujung garis, dan Jordan di garis depan ketika menjalankan perintah.
run_the_race
39

Sebagai permulaan, tidak perlu untuk kembali. G$akan melakukan. Dan Anda menyesatkan dengan menghitung <Esc>dan asepanjang perintah mode normal.

Namun, Anda dapat menggunakan Ctrl+ Endjika mau.

hobbs
sumber
8
ituCtrl-END
zmo
Saya belum End-Key pada keyboard saya (jika itu yang Anda maksud).
Sebenarnya, jawaban dengan menunjukkan TIMSS bahwa saya juga menghitung <ESC>dan a, karena dia tahu cara untuk menggantikan Shift+$, adengan A.
1
@ apa kebanyakan keyboard laptop saat ini memiliki home / end diletakkan di atas / bawah / kiri / kanan bersama Fn jika mereka tidak memiliki tombol home / end didedikasikan
phuclv
22

Saya pikir pertanyaannya adalah "Pindahkan kursor ke akhir file dalam vim"?

End-of-file: Esc+ G
Begin-of-file Esc+ g(atau ggjika Anda sudah berada di area perintah)

AlexD
sumber
21

Cara terbaik untuk menuju ke baris terakhir file adalah dengan G. Ini akan memindahkan kursor ke baris terakhir file.

Cara terbaik untuk pergi ke kolom terakhir dalam baris adalah dengan $. Ini akan memindahkan kursor ke kolom terakhir dari baris saat ini.

Jadi hanya dengan melakukan G$Anda sampai ke akhir file dan baris terakhir.

Dan jika Anda ingin masuk ke mode insert di akhir file maka Anda cukup lakukan GA. Dengan melakukan ini, Anda pergi ke baris terakhir file, dan masukkan mode memasukkan dengan menambahkan ke kolom terakhir. :)

greduan
sumber
13

Pergi ke Atas - Ganda g

Pergi ke Bawah - Shift+g

Fuat
sumber
1
Luar biasa. Bekerja di Mac juga.
Bishwas Mishra
11

Jika Anda berencana untuk menulis baris berikutnya, ESCGoakan melakukan carriage return dan menempatkan Anda dalam mode insert di baris berikutnya (di akhir file), menyimpan beberapa penekanan tombol lagi.

broc.seib
sumber
6
  • Ctrl + Home = Lompat untuk memulai file
  • Ctrl + End = Lompat ke akhir file
Gili
sumber
3

Ini lebih cepat:

<ESC>GA
cforbish
sumber
5
Mengapa mengirim jawaban duplikat, terutama ketika itu tidak menjelaskan A?
timss
3

Anda bisa memetakannya ke kunci, misalnya F3, di .vimrc

inoremap <F3> <Esc>GA
Tim
sumber
2
Meskipun mungkin, ini umumnya merupakan ide yang buruk. Alih-alih bertujuan untuk memori otot dan menggunakan GAatau G$.
timss
Saya masih menang dengan 1 stroke key :) Pada catatan yang lebih serius, jika Anda benar-benar membutuhkan sesuatu yang cepat di vim, mempelajari cara .vimrc berguna.
Tim
Akan lebih baik jika memiliki contoh peta yang lengkap alih-alih menyuruh OP untuk mencarinya. Karena jika Anda tidak dapat menemukannya bagaimana seharusnya OP?
FDinoff
1
Anda tidak "memenangkan" apa pun karena Anda harus pindah dari homerow Anda. Selain itu, Anda tidak dapat menggunakan ini pada konfigurasi orang lain atau bahkan vi, jika Anda menggunakannya. Anda benar-benar tidak menghemat waktu. Jika ada, gunakan C-endseperti yang disebutkan oleh hobbs.
timss
Saya setuju dengan komentar di sini, tetapi saya membersihkan pemetaan untuk Anda
D. Ben Knoble
0

Saya telah mencari cara untuk memindahkan kursor ke akhir baris dan kemudian mengedit pada terminal mac, inilah cara kerjanya. Keluar dari mode edit Anda, ketik g_ (itu 'g' lalu garis bawah tanpa titik dua di depan), lalu cukup tekan tombol 'a' sehingga Anda bisa "menambahkan" kode ke skrip Anda

Xinyi Xiang
sumber
Apakah Anda mungkin mencari A?
D. Ben Knoble
Saya telah mencoba A tetapi tidak berhasil
Xinyi Xiang
itu aneh, Apada dasarnya setara dengan$a
D. Ben Knoble
0

Alternatif lain:

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

Ini mungkin berguna jika Anda sedang menulis suatu fungsi. Situasi lain adalah ketika saya harus membuka templat tertentu dan melompat ke akhir baris pertama, saya bisa melakukannya:

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

Hal di atas juga bisa dilakukan dengan

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

Lihat juga:

vim - Dapatkan panjang garis saat ini

Sergiy Kolodyazhnyy
sumber
0

Jika Anda ingin menempelkan beberapa konten clipboard di akhir jenis file:

:$ put +

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