Vim: Làm thế nào để bạn tìm kiếm văn bản một cách hiệu quả?


30

Bất cứ khi nào bạn muốn tìm kiếm văn bản trong vim, bạn sẽ gõ /và sau đó là chuỗi bạn đang tìm kiếm.

Tuy nhiên, khi chuỗi dài và bạn muốn thực hiện việc này nhiều lần, có cách nào để thực hiện để bạn không phải nhập /andthisreallylongstringnhiều lần không?


12
Tôi khuyên bạn nên lướt qua Vim Cheat Sheet hoặc Vim Mẹo ngắn gọn - bạn có thể tìm thấy nhiều cách khác để nhận được nhiều hơn từ vim.
RedGrittyBrick

Protip: có các trình soạn thảo văn bản cho Linux không cần nhiều tuần nghiên cứu để sử dụng.
BlueRaja - Daniel Pflughoeft

4
@BlueRaja: không chắc đây là một nơi tốt cho một cuộc chiến biên tập. Ngoài ra đối với một cuộc chiến hệ điều hành vì cũng có các trình soạn thảo văn bản đẹp và thân thiện với người dùng cho Windows hoặc Mac OS. Phải nghiên cứu làm thế nào để hiệu quả với trình soạn thảo sẽ giúp bạn có thể hiệu quả hơn cuối cùng so với việc gắn bó với các tính năng cơ bản.
Benoit

Câu trả lời:


61

Nhấn "n" sau khi bạn hoàn thành một tìm kiếm, sau đó nó sẽ lặp lại hành động trước đó (tìm kiếm).


12
Ngoài ra, Nsẽ đi đến kết quả trước đó.
Jin

15
Ngoài ra, nhấn mũi tên lên sau khi đánh /sẽ nhớ lại cụm từ tìm kiếm cuối cùng
bastibe

6
Cũng q/sẽ hiển thị một cửa sổ có thể chỉnh sửa với tất cả các cụm từ tìm kiếm gần đây.
ChúZeiv

7
Ngoài ra, nhấn /và Enter sẽ lặp lại tìm kiếm trước đó. Nhấn ?và Enter sẽ lặp lại tìm kiếm trước đó ngược lại.
Andy Lester

3
/Ctrl-Flà một thay thế cho q/điều đó có thể là một mnemonic dễ dàng hơn (ctrl-f == find). Giống như q, nó cũng hoạt động cho chế độ lệnh.
idbrii

34

Nếu chuỗi bạn tìm kiếm nằm dưới con trỏ, thì bạn có thể nhập *để tìm kiếm chuỗi chuyển tiếp hoặc #tìm kiếm chuỗi ngược.


19

Làm thế nào tôi thường tìm kiếm là một cái gì đó như;

  1. Nhấn '/'
  2. Nhập cụm từ tìm kiếm
  3. nhấn nút Enter
  4. Sử dụng 'n' và 'N' để điều hướng tiến và lùi trong tìm kiếm.

Vim giữ lịch sử tìm kiếm của bạn, vì vậy nếu bạn cần các tìm kiếm trước đó, bạn có thể nhấn '/' và sử dụng các phím LÊN và XUỐNG hoặc <Ctrl-P> <Ctrl-N> để duyệt lịch sử tìm kiếm.

Bạn cũng có thể dùng '?' thay vì '/' để tìm kiếm ngược.

Tôi cũng thích sử dụng:

set ignorecase smartcase

Bây giờ nó sẽ chỉ là một tìm kiếm phân biệt chữ hoa chữ thường nếu bạn có các ký tự viết hoa trong chuỗi tìm kiếm.


15

Hai mẹo bổ sung có thể giúp cho việc tìm kiếm của bạn hiệu quả hơn là set hlsearchset incsearch.

  • set hlsearch, tốt, làm nổi bật kết quả tìm kiếm của bạn. Nhập :nohđể tắt chúng khi bạn không cần nó nữa.

  • set incsearch bật tìm kiếm gia tăng.

    Trích từ :help incsearch

    Trong khi gõ một lệnh tìm kiếm, hiển thị vị trí của mẫu, vì nó đã được gõ cho đến nay, khớp. Chuỗi phù hợp được tô sáng. Nếu mẫu không hợp lệ hoặc không tìm thấy, không có gì được hiển thị. Màn hình sẽ được cập nhật thường xuyên, điều này chỉ hữu ích trên các thiết bị đầu cuối nhanh.

    Nếu không incsearch, kết quả của bạn sẽ chỉ được hiển thị sau khi nhấn <CR>vào từ khóa tìm kiếm của bạn.

    Thí dụ:

    Bạn muốn tìm kiếm wildignore

    nhập mô tả hình ảnh ở đây

    Bạn nhập /wildvà trận đấu đầu tiên được tô sáng tự động.

    nhập mô tả hình ảnh ở đây

    Sau đó nhập ivà nó đi vào trận đấu chính xác tiếp theo.

    nhập mô tả hình ảnh ở đây


13

Một mẹo khác chưa được đề cập: Nhấn các ký tự qvà sau đó /, sẽ cung cấp cho bạn một danh sách các cụm từ tìm kiếm trước đó của bạn. Bạn có thể chỉnh sửa chúng giống như bất kỳ dòng nào khác trong tài liệu, sau đó nhấn enter để sử dụng lại chúng cho tìm kiếm mới.


3
Đã tìm kiếm điều này. Đây là một lưu ý quan trọng, và rất về chủ đề.
cincodenada

8

Sau khi nhấn /để bắt đầu tìm kiếm, bạn có thể mũi tên lên để cuộn qua lịch sử tìm kiếm của mình.

Bạn có thể nhập cụm từ thông dụng để tránh phải nhập toàn bộ cụm từ tìm kiếm: and.*longstring


7

Có phải chỉ nhấn / không có đối số sau đây không làm việc cho bạn? Trên tất cả các hệ thống của chúng tôi, điều đó gây ra sự lặp lại của bất kỳ tìm kiếm nào được thực hiện sau cùng.


6

Có một mẫu đẹp mà bạn có thể làm theo để tìm kiếm văn bản được kéo dài . Sau đó, bạn thậm chí không phải nhập từ đó, nếu bạn đã điều hướng đến nó bằng phương tiện khác ngoài tìm kiếm. Tóm lại, nếu bạn đang ở ký tự đầu tiên của từ bạn muốn tìm kiếm:

v
e
y
/
Ctrl-r
0
Enter

(sau đó tiếp tục trận đấu tiếp theo với n hoặc N)

Tuy nhiên *(hoặc #) thực hiện khá nhiều điều tương tự như tất cả các lệnh này. Sự khác biệt duy nhất là bạn có thể linh hoạt theo số lượng từ bạn chỉ định (thay vì e, đến cuối từ, bạn có thể chọn bao nhiêu tùy ý, ví dụ: 9l)


1
  • /string - Tìm kiếm chuỗi chuyển tiếp
  • ?string - Tìm kiếm lại chuỗi
  • n - Tìm kiếm phiên bản tiếp theo của chuỗi
  • N - Tìm kiếm ví dụ trước của chuỗi

1

Rất nhiều thời gian khi lập trình tôi sẽ muốn tìm kiếm aVeryLongVariableNameInTheProgram.

Trong vim, bạn có thể dễ dàng kéo văn bản vào bộ đệm / đăng ký và sau đó tìm kiếm nó:

  • Đặt con trỏ vào ký tự đầu tiên của từ
  • "Bywđể kéo văn bản aVeryLongVariableNameInTheProgramvào bộ đệm B (chọn mục ưa thích của bạn, tôi đã sử dụng B)
  • /^RB (gạch chéo, Ctrl-R, B) để dán bộ đệm B trên dòng tìm kiếm

Tất nhiên bạn cũng có thể kéo dài đến cuối dòng, v.v. thay vì hét một từ duy nhất - tôi chỉ tình cờ sử dụng trình tự trên mọi lúc.


1

Ngoài ra, bạn có thể dán nội dung của bất kỳ thanh ghi nào vào dấu nhắc tìm kiếm bằng cách nhấn Ctrl+ Rvà sau đó là tên của thanh ghi, ví dụ: / Ctrl+ R0 Enter.


Tôi nghĩ bạn một từ.
dotancohen

0

Là chuỗi dài mà bạn đang nhập một tên biến? Hoặc một chuỗi dài trong văn bản của bạn? Sau đó nhấn *để tìm kiếm từ / chuỗi dưới con trỏ của bạn.

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.