The `.
perintah akan membawa Anda ke perubahan terakhir Anda.
The `
pergi ke tanda, dan .
merupakan "khusus" tanda yang diatur secara otomatis ke posisi di mana perubahan terakhir dibuat. Lihat :help `.
untuk informasi lebih lanjut.
Ada juga ``
yang akan membawa Anda kembali ke tempat kursor berada sebelum Anda melakukan lompatan terakhir Anda. Lihat : bantuan``
untuk informasi lebih lanjut.
Tanda lain yang bermanfaat adalah `^
; ini adalah posisi di mana kursor terakhir kali ketika mode insert dihentikan. Lihat :help `^
.
Lihat :help mark-motions
beberapa info umum tentang penggunaan tanda (termasuk beberapa tanda "khusus" lainnya yang secara otomatis ditetapkan).
g;
dang,
untuk berpindah di antara posisi dalam daftar perubahan. Lihat:h g;
dan:h g,
'
(apostrof) alih-alih`
(backtick).Berikut ini pendekatan lain yang sesuai dengan skenario yang Anda berikan, dan akan melompat ke tempat Anda sebelumnya sebelum
gg
(bukan ke baris yang diubah terakhir).Menggunakan CtrlO
Ketika Anda menekan
gg
, posisi kursor lama Anda didorong ke daftar lompatan . Dari:help jumplist
:Ini mengharuskan Anda menggunakan Vim (bukan vi) dengan
+jumplist
fitur tersebut. Jika:echo has('jumplist')
dicetak1
, maka Anda dapat menggunakan ini.sumber
Untuk menambah jawaban dnetserr dan komentar Peter Rincker, Vim menyimpan daftar perubahan, dan memiliki beberapa perintah yang terkait dengan ini.
akan mendaftar perubahan, menunjukkan kepada Anda di mana mereka berada dan apa itu. Sebagai contoh:
Baris dengan
>
menunjukkan di mana di tumpukan perubahan Anda, jenis seperti daftar lompat (:jumps
) atau tag tumpukan (:tags
). Juga seperti daftar lompat dan tumpukan tag, Anda dapat melintasi daftar ini.Dalam mode normal, gerakannya adalah
g;
untuk pergi ke lokasi perubahan sebelumnya, dang,
untuk pergi ke yang berikutnya. Anda juga dapat mengetikkan nomor perubahan sebelumg;
ataug,
untuk pergi ke perubahan itu dari daftar. Di atas,2g;
akan membawa saya ke tempat perubahan yang melibatkan stdio.h terjadi.Ketika di tengah tumpukan, angka-angka dari
:changes
pembaruan menunjukkan jarak relatif. Sebagai contoh:Ini menunjukkan bahwa saya dapat kembali satu (
1g;
atau hanyag;
) atau meneruskan satu (1g,
atau hanyag,
).Ini bagus jika perubahan yang ingin Anda lakukan benar-benar terjadi beberapa modifikasi yang lalu
Kerugian dari ini adalah bahwa ia tampaknya tidak bertindak seperti gerakan normal. Misalnya, Anda tidak
dg;
dapat menghapus dari kursor ke lokasi perubahan sebelumnya, sedangkand'.
dand'^
lakukan sebagai gerakan.sumber
g;
akan menuju ke baris yang sebelumnya diedit.sumber
Karena perintah undo di Vi akan bertindak sebagai re-do ketika perintah terakhir dibatalkan, saya telah menggunakan
uu
sebagai sarana untuk kembali ke tempat saya terakhir diedit.Jika Anda menjalankan Vim dengan
nocompatible
set (seperti kebanyakan orang), Anda ingin menggunakanu
diikuti olehCTRL+R
untuk membatalkan & mengulang. Kalau tidakuu
akan bekerja seperti di Vi.sumber
:set nocompatible
tidak digunakan.vim
(withnocompatible
) melakukan dua undo withuu
, tapi saya menggunakanu
danCTRL+r
untuk efek yang sama.