Cách thực hiện các hoạt động tìm kiếm trong Vim

theanh

Administrator
Nhân viên
Mặc dù chúng ta đã đề cập đến một số tính năng của Vim cho đến nay, nhưng bộ tính năng của trình soạn thảo này quá rộng đến nỗi dù bạn có tìm hiểu nhiều đến đâu thì vẫn thấy chưa đủ. Tiếp tục với loạt bài hướng dẫn về Vim, trong bài viết này, chúng ta sẽ thảo luận về các kỹ thuật tìm kiếm khác nhau mà trình soạn thảo cung cấp.
Mã:
Nhưng trước khi thực hiện, xin lưu ý rằng tất cả các ví dụ, lệnh và hướng dẫn được đề cập trong hướng dẫn này đều đã được thử nghiệm trên Ubuntu 14.04 và phiên bản Vim mà chúng tôi sử dụng là 7.4.

Các thao tác tìm kiếm cơ bản trong Vim​

Nếu bạn đã mở một tệp trong trình soạn thảo Vim và muốn tìm kiếm một từ hoặc mẫu cụ thể, bước đầu tiên bạn phải thực hiện là thoát khỏi chế độ Insert (nếu chế độ đó hiện đang hoạt động). Sau khi hoàn tất, hãy nhập '/' (không có dấu ngoặc kép) theo sau là từ/mẫu mà bạn muốn tìm kiếm.

Ví dụ, nếu từ bạn muốn tìm kiếm là 'linux', thì từ đó sẽ xuất hiện ở cuối cửa sổ Vim của bạn như sau:



Sau đó, chỉ cần nhấn phím Enter và bạn sẽ thấy Vim sẽ đặt con trỏ vào dòng đầu tiên (có chứa từ) mà nó gặp bắt đầu từ dòng mà con trỏ đã ở khi bạn ở chế độ Insert. Nếu bạn vừa mở tệp và bắt đầu tìm kiếm thì thao tác tìm kiếm sẽ bắt đầu từ dòng đầu tiên của tệp.

Để chuyển sang dòng tiếp theo có chứa từ đã tìm kiếm, hãy nhấn phím 'n'. Khi bạn đã duyệt qua tất cả các dòngchứamẫu tìm kiếm, nhấn phím 'n' một lần nữa sẽ khiến trình soạn thảo lặp lại tìm kiếm và bạn sẽ quay lại lần xuất hiện đầu tiên được tìm kiếm một lần nữa.



Trong khi duyệt qua các lần xuất hiện được tìm kiếm, nếu bạn muốn quay lại lần xuất hiện trước đó, hãy nhấn 'N' (shift+n). Ngoài ra, cần đề cập rằng tại bất kỳ thời điểm nào, bạn có thể nhập 'ggn' để nhảy đến kết quả khớp đầu tiên hoặc 'GN' để nhảy đến kết quả khớp cuối cùng.

Trong trường hợp bạn đang ở cuối tệp và muốn tìm kiếm ngược lại, thì thay vì bắt đầu tìm kiếm bằng /, hãy sử dụng ?. Đây là một ví dụ:




Tùy chỉnh tìm kiếm của bạn​

1. Làm nổi bật tìm kiếm​

Mặc dù việc nhảy từ một lần xuất hiện của từ/mẫu tìm kiếm sang lần xuất hiện khác rất dễ dàng khi sử dụng 'n' hoặc 'N', nhưng mọi thứ sẽ trở nên thân thiện hơn với người dùng nếu các lần xuất hiện được tìm kiếm được làm nổi bật. Ví dụ, hãy xem ảnh chụp màn hình bên dưới:



Điều này có thể thực hiện được bằng cách đặt biến 'hlsearch', bạn có thể thực hiện bằng cách viết lệnh sau ở chế độ bình thường/lệnh:
Mã:
:set hlsearch



2. Làm cho tìm kiếm không phân biệt chữ hoa chữ thường​

Theo mặc định, tìm kiếm bạn thực hiện trong Vim phân biệt chữ hoa chữ thường. Điều này có nghĩa là nếu tôi tìm kiếm 'linux', thì 'Linux' sẽ không được khớp. Tuy nhiên, nếu đó không phải là những gì bạn đang tìm kiếm, thì bạn có thể làm cho tìm kiếm không phân biệt chữ hoa chữ thường bằng lệnh sau:
Mã:
:set ignorecase
Vì vậy, sau khi tôi đặt biến 'ignorecase' bằng lệnh đã đề cập ở trên và tìm kiếm 'linux', các lần xuất hiện của 'LINUX' cũng được đánh dấu:




3. Tìm kiếm thông minh​

Vim cũng cung cấp cho bạn một tính năng mà bạn có thể yêu cầu trình soạn thảo phân biệt chữ hoa chữ thường chỉ khi từ/mẫu được tìm kiếm chứa ký tự viết hoa. Đối với điều này, trước tiên bạn cần đặt biến 'ignorecase' và sau đó đặt biến 'smartcase'.
Mã:
:set ignorecase
:set smartcase
Ví dụ, nếu một tệp chứa cả 'LINUX' và 'linux' và smartcase được bật, thì chỉ những lần xuất hiện của từ LINUX sẽ được tìm kiếm nếu bạn tìm kiếm bằng '/LINUX'. Tuy nhiên, nếu tìm kiếm là '/linux', thì tất cả các lần xuất hiện sẽ được khớp bất kể chúng có viết hoa hay không.


4. Tìm kiếm gia tăng​

Giống như Google, chẳng hạn, hiển thị kết quả tìm kiếm khi bạn nhập truy vấn của mình (cập nhật chúng với mỗi chữ cái bạn nhập), Vim cũng cung cấp tìm kiếm gia tăng. Để truy cập tính năng này, bạn sẽ phải thực hiện lệnh sau trước khi bắt đầu tìm kiếm:
Mã:
:set incsearch

Một số mẹo/thủ thuật tìm kiếm Vim thú vị khác​

Có một số mẹo tìm kiếm khác mà bạn có thể thấy hữu ích.

Để bắt đầu, nếu bạn muốn tìm kiếm một từ có trong tệp nhưng không muốn nhập từ đó, bạn chỉ cần đưa con trỏ xuống dưới từ đó và nhấn * (hoặc shift+8). Và nếu bạn muốn khởi chạy tìm kiếm một phần (ví dụ: tìm kiếm cả 'in' và 'terminal'), thì bạn có thể đưa con trỏ xuống dưới từ (trong ví dụ của chúng tôi là in) và tìm kiếm bằng cách nhấn g* (nhấn 'g' một lần rồi tiếp tục nhấn *) trên bàn phím.

Lưu ý: Nhấn # hoặc g# trong trường hợp bạn muốn tìm kiếm ngược lại.

Tiếp theo, nếu muốn, bạn có thể nhận danh sách tất cả các lần xuất hiện của từ/mẫu được tìm kiếm cùng với các dòng và số dòng tương ứng tại một nơi. Bạn có thể thực hiện việc này bằng cách nhập [I sau khi đã bắt đầu tìm kiếm. Sau đây là ví dụ về cách nhóm kết quả và hiển thị ở cuối cửa sổ Vim:



Tiếp theo, như bạn có thể đã biết, tìm kiếm Vim sẽ tự động ngắt dòng theo mặc định, nghĩa là sau khi đến cuối tệp (hoặc đến lần xuất hiện cuối cùng của từ được tìm kiếm), nhấn "tìm kiếm tiếp theo" sẽ đưa con trỏ đến lần xuất hiện đầu tiên một lần nữa. Nếu muốn, bạn có thể tắt tính năng ngắt dòng tìm kiếm này bằng cách chạy lệnh sau:
Mã:
:set nowrapscan
Để bật lại quét ngắt dòng, hãy sử dụng lệnh sau:
Mã:
:set wrapscan
Cuối cùng, giả sử bạn muốn thực hiện một thay đổi nhỏ đối với một từ đã tồn tại trong tệp, sau đó thực hiện thao tác tìm kiếm, thì một cách là nhập / theo sau là từ đó. Nhưng nếu từ đó dài hoặc phức tạp, thì có thể mất thời gian để nhập nó.

Một cách dễ dàng là đưa con trỏ xuống dưới từ bạn muốn chỉnh sửa một chút, sau đó nhấn '/' rồi nhấn Ctrl-r theo sau là Ctrl-w. Từ dưới con trỏ không chỉ được sao chép mà còn được dán sau '/', cho phép bạn dễ dàng chỉnh sửa và tiếp tục thao tác tìm kiếm.

Để biết thêm các mẹo (bao gồm cách bạn có thể sử dụng chuột để làm mọi thứ dễ dàng hơn trong Vim), hãy truy cập tài liệu chính thức của Vim.


Kết luận​

Tất nhiên, không ai mong đợi bạn học thuộc lòng tất cả các mẹo/thủ thuật được đề cập ở đây. Những gì bạn có thể làm là bắt đầu với mẹo mà bạn nghĩ sẽ có lợi nhất cho mình và thực hành thường xuyên. Khi nó đã ăn sâu vào trí nhớ của bạn và trở thành thói quen, hãy quay lại đây và xem bạn nên học mẹo nào tiếp theo.

Bạn có biết thêm mẹo nào như vậy không? Bạn có muốn chia sẻ với mọi người trong cộng đồng HTF không? Hãy để lại bình luận bên dưới.
 
Back
Bên trên