Dalam vim, bagaimana saya kembali ke tempat saya sebelum pencarian?

258

Pemrograman dalam vim saya sering mencari sesuatu, menariknya, lalu kembali ke tempat saya sebelumnya, menyisipkannya, memodifikasinya.

Masalahnya adalah bahwa setelah saya mencari dan menemukan, saya harus secara MANUAL menemukan jalan kembali ke tempat saya sebelumnya.

Apakah ada cara otomatis untuk kembali ke tempat saya berada ketika saya memulai pencarian terakhir saya?

Edward Tanguay
sumber
kemungkinan duplikat kursor Pindahkan ke posisi terakhir
Simone Carletti

Jawaban:

393

Ctrl+ Omembawa saya ke lokasi sebelumnya. Tidak tahu tentang lokasi sebelum pencarian.

Sunting: Juga, `.akan membawa Anda ke perubahan terakhir yang Anda buat.

Agnel Kurian
sumber
Tampaknya juga menekan CTRL + O cukup kali juga akan mulai membawa Anda kembali melalui file yang dibuka sebelumnya.
Mark Biek
1
Ctrl + O adalah metode pilihan saya juga. Saya menggunakannya terus-menerus dan berharap editor lain meniru perilakunya.
amrox
45
Ya, CTRL-O dan CTRL-Sepertinya saya membawa Anda bolak-balik ke mana saja, baik.
Edward Tanguay
8
Ctrl + T hanya akan membawa Anda kembali jika Anda sampai di sana menggunakan tag. Jika Anda mencari tanpa menggunakan tag Ctrl + T akan membawa Anda kembali ke tempat Anda sebelum Anda mencari tag
Nathan Fellman
1
Saya telah menemukan bahwa jika saya melompat :70dan kemudian :100, menekan ctrl+osekali akan kembali ke lokasi semula, bukan baris 70. :(
WhyNotHugo
91

Gunakan ``untuk melompat kembali ke posisi yang tepat Anda berada di sebelum Anda mencari / melompat, atau ''untuk melompat kembali ke awal garis Anda berada sebelum Anda mencari / melompat.

Max Cantor
sumber
4
Hanya melihat berfungsi jika Anda berada di pertandingan pertama, n-dalam pertandingan berikutnya berarti Anda tidak melompat kembali ke tempat Anda mulai.
Kris
Bagaimana jika Anda mencari dan membuat perubahan?
Costa
1
Anda juga dapat menggunakan g;dan g,, ia pergi ke posisi perubahan sebelumnya / selanjutnya.
goetzc
39

Saya selalu melakukannya dengan menetapkan tanda.

  1. Dalam mode perintah, tekan m[huruf] . Misalnya, masetel tanda pada baris saat ini menggunakan tanda sebagai tanda.

  2. Untuk kembali ke tanda tekan '[surat] . Misalnya, 'amembawa Anda kembali ke tanda garis yang diatur dalam langkah 1. Untuk kembali ke posisi kolom baris tempat Anda menandai garis, gunakan `a( centang-kembali [huruf] ).

Untuk melihat semua tanda yang saat ini ditetapkan, ketik :marks.


Pada nada yang sedikit tidak berhubungan, saya baru saja menemukan satu hal bagus tentang tanda.

Katakanlah Anda melompat untuk menandai b dengan melakukan mb. Vim secara otomatis menetapkan tanda '(itu adalah tanda kutip tunggal) menjadi garis mana pun Anda berada sebelum melompat untuk menandai b .

Itu berarti Anda dapat melakukan 'buntuk melompat ke tanda itu, kemudian lakukan ''(2 tanda kutip tunggal) untuk melompat kembali ke tempat Anda sebelumnya.

Saya menemukan ini secara tidak sengaja menggunakan :marksperintah, yang menunjukkan daftar semua tanda.

Mark Biek
sumber
6
untungnya tanda sering tidak diperlukan karena vim melacak beberapa posisi khusus dan memberi Anda akses kepada mereka dengan ``, ^ O, dll.
aehlke
tanda sepertinya hanya membawa saya ke awal baris yang telah ditetapkan. ):
Fzs2
1
@HermannIngjaldsson Anda mungkin sudah mengetahui hal ini sekarang, tetapi saat menggunakan 'akan membawa Anda ke baris yang ditandai, `akan membawa Anda ke lokasi yang tepat.
azmr
38

Anda benar-benar harus membacanya :help jumplistmenjelaskan semua ini dengan sangat baik.

André
sumber
Saya suka jawaban ini yang terbaik, ada BANYAK info di: membantu bahwa kebanyakan orang tidak tahu tentang (dan saya tidak sampai baru-baru ini)
Christian Stewart
1
Bacaan yang bagus! Ini sangat membantu. <Co> dan <C> untuk menelusuri tempat-tempat yang baru saja Anda kunjungi. Bekerja melintasi buffer secara default:)
Costa
29

CTRL+Odan CTRL+I, untuk melompat mundur dan maju.

penjualan
sumber
7

Cara paling sederhana adalah dengan menetapkan tanda, dengan m[letter], lalu kembali ke sana dengan'[letter]

Paul Tomblin
sumber
Sungguh menyenangkan melihat Anda ketika saya mencari kiat vim. Saya telah menggunakan ctrl-o lebih banyak bersama dengan ctrl-i karena langkah bolak-balik lebih mudah dan lebih otomatis.
MattK
7

Saya menggunakan ini:

nnoremap / ms/
nnoremap ? ms?

Lalu jika saya mencari sesuatu dengan menggunakan /atau ?, saya bisa kembali dengan cepat `s. Anda dapat mengganti surat itu sdengan surat apa pun yang Anda suka.

Ethan Zhang
sumber
Satu-satunya peringatan di sini adalah istirahat mencari di jendela seperti NerdTree di mana mdidefinisikan sebagai sesuatu selain tanda, dalam kasus NerdTree itu adalah menu.
Kris