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?


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.


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.


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.


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.


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


7

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


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.