Trong vim, làm thế nào để tôi quay trở lại nơi tôi đã ở trước khi tìm kiếm?


258

Lập trình trong vim Tôi thường đi tìm kiếm một cái gì đó, kéo nó ra, sau đó quay trở lại nơi tôi đang ở, chèn nó, sửa đổi nó.

Vấn đề là sau khi tôi tìm kiếm và tìm kiếm, tôi cần phải TUYỆT VỜI tìm đường trở về nơi tôi đã ở.

Có cách nào tự động để quay lại nơi tôi đã ở khi tôi bắt đầu tìm kiếm cuối cùng không?


Câu trả lời:


393

Ctrl+ Ođưa tôi đến vị trí trước đó. Không biết về vị trí trước khi tìm kiếm.

Chỉnh sửa: Ngoài ra, `.sẽ đưa bạn đến thay đổi cuối cùng bạn đã thực hiện.


Dường như nhấn CTRL + O đủ lần cũng sẽ bắt đầu đưa bạn trở lại qua các tệp đã mở trước đó.
Đánh dấu Biek

1
Ctrl + O cũng là phương pháp ưa thích của tôi. Tôi sử dụng nó liên tục và mong muốn các biên tập viên khác nhân rộng hành vi của nó.
amrox

45
Có, CTRL-O và CTRL-Tôi dường như đưa bạn qua lại nơi bạn đã từng đến, thật tuyệt.
Edward Tanguay

8
Ctrl + T sẽ chỉ đưa bạn trở lại nếu bạn đến đó bằng cách sử dụng thẻ. Nếu bạn đã tìm kiếm nó mà không sử dụng thẻ, Ctrl + T sẽ đưa bạn trở lại vị trí bạn đã ở trước khi bạn tìm kiếm thẻ
Nathan Fellman

1
Tôi đã thấy rằng nếu tôi nhảy vía :70và sau đó :100, nhấn ctrl+omột lần sẽ quay lại vị trí ban đầu, không phải dòng 70. :(
WhyNotHugo

91

Sử dụng ``để nhảy trở lại vị trí chính xác mà bạn đã ở trước khi bạn tìm kiếm / nhảy hoặc ''để quay trở lại điểm bắt đầu của dòng trước khi bạn tìm kiếm / nhảy.


4
Chỉ nhìn thấy hoạt động nếu bạn ở trận đấu đầu tiên, - nđến các trận đấu tiếp theo có nghĩa là bạn không quay trở lại nơi bạn bắt đầu.
Kris

Điều gì nếu bạn tìm kiếm và thực hiện một sự thay đổi?
Costa

1
Bạn cũng có thể sử dụng g;g,, nó đi đến vị trí của thay đổi trước đó / tiếp theo.
goetzc

39

Tôi đã luôn luôn thực hiện bằng cách thiết lập một dấu ấn.

  1. Trong chế độ lệnh, nhấn m[chữ cái] . Ví dụ, mađặt một dấu tại dòng hiện tại sử dụng một như nhận diện nhãn hiệu.

  2. Để quay lại dấu, nhấn '[chữ cái] . Ví dụ: 'ađưa bạn trở lại dấu đường được đặt ở bước 1. Để quay lại vị trí cột của hàng nơi bạn đã đánh dấu đường, hãy sử dụng `a( đánh dấu lại [chữ cái] ).

Để xem tất cả các dấu hiện đang đặt, hãy nhập :marks.


Trên một ghi chú hơi không liên quan, tôi chỉ phát hiện ra một điều tiện lợi khác về nhãn hiệu.

Hãy nói rằng bạn nhảy để đánh dấu b bằng cách làm mb. Vim tự động đặt dấu '(đó là một trích dẫn) thành bất kỳ dòng nào bạn đang ở trước khi nhảy sang đánh dấu b .

Điều đó có nghĩa là bạn có thể làm 'bđể nhảy đến điểm đó, sau đó thực hiện ''(2 dấu ngoặc đơn) để quay lại bất cứ nơi nào trước đây.

Tôi vô tình phát hiện ra điều này bằng cách sử dụng :markslệnh, trong đó hiển thị một danh sách tất cả các dấu.


6
may mắn thay, một dấu hiệu thường không cần thiết vì vim theo dõi đặc biệt một số vị trí và cho phép bạn truy cập vào chúng với ``, ^ O, v.v.
aehlke

dấu hiệu dường như chỉ đưa tôi đến đầu dòng mà nó được đặt. ):
Fzs2

1
@HermannIngjaldsson Bây giờ bạn có thể đã tìm ra điều này, nhưng trong khi sử dụng 'sẽ đưa bạn đến dòng được đánh dấu, `sẽ đưa bạn đến vị trí chính xác.
azmr

38

Bạn thực sự nên đọc :help jumplistnó giải thích tất cả những điều này rất tốt.


Tôi thích câu trả lời này nhất, có rất nhiều thông tin: giúp đỡ mà hầu hết mọi người không biết (và tôi đã không làm cho đến gần đây)
Christian Stewart

1
Thật là một đọc tuyệt vời! Điều này là siêu hữu ích. <Co> và <Ci> để đi vòng qua những địa điểm gần đây bạn đã đến. Hoạt động trên các bộ đệm theo mặc định :)
Costa


7

Cách đơn giản nhất là đặt dấu, với m[letter], sau đó quay lại với'[letter]


Thật là một điều trị để nhìn thấy bạn khi tôi tìm kiếm lời khuyên vim. Tôi đã sử dụng ctrl-o nhiều hơn cùng với ctrl-i vì nó bước qua lại dễ dàng và tự động hơn.
MattK

7

Tôi sử dụng cái này:

nnoremap / ms/
nnoremap ? ms?

Sau đó, nếu tôi tìm kiếm thứ gì đó bằng cách sử dụng /hoặc ?, tôi có thể quay lại nhanh chóng `s. Bạn có thể thay thế chữ cái này scho bất kỳ chữ cái nào bạn thích.


Chỉ có một cảnh báo ở đây là nó dừng tìm kiếm trong một cửa sổ như NerdTree, nơi mđược xác định là một cái gì đó không phải là nhãn hiệu, trong trường hợp NerdTree, nó là menu.
Kris
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.