Vim search and replace.


Hôm nay chúng ta sẽ tìm hiểu search và replace trong vim.

Ta xem các cú pháp sau nhé.

1.Search và replace 1 trường hợp tại dòng 1.

:1s/hello/hi/

Tại dòng 1 search chữ hello thay bằng chữ hi. Nhưng chỉ search và replace 1 chữ hello đầu tiên. Còn nếu có nhiều chữ hello thì sao. Ta xem ví dụ tiếp.

2. Search và replace tất cả trường hợp dòng 1.

:1s/hello/hi/g

Cái này cũng giống trên như search và replace tất cả chữ hello bằng chữ hi tại dòng 1.

3. Search và replace tất cả trường hợp từ dòng 1 đến dòng 10.

:1,10s/hello/hi/g

Search và replace từ dòng 1 đến dòng 10.

4. Search và replace tất cả trường hợp từ dòng hiện tại đến dòng cuối.

:.,$s/hello/hi/g

. là dòng hiện tại, $ là cuối file. Search và replace từ dòng hiện tại tới cuối file.

5. Search và replace tất cả các dòng trong file.

:%s/hello/hi/g

% có nghĩa là search tất cả dòng trong file.

6. Search và replace tất cả các dòng trong khoảng tô đen.

Select + s/hello/hi/g

Ta chuyển sang visual mode tô đen những dòng cần search và gõ :s/hello/hi/g sẽ search và replace hello thành hi trong khoảng tô đen

7. Search và replace chính xác từ.

:%s/\<is\>/was/g

Ví dụ ta có:

This car is good.

Ta muốn đổi thành

This car was good.

Nếu ta gõ : %s/is/was/g thì sẽ đổi thành

Thwas car was good.

Để tránh trường hợp trên ta gõ như sau:

:$s/\<is\>/was/g

Ta có kết quả mong muốn

This car was good.

8. Search và replace bỏ qua chữ hoa hay thường.

:$s/\<is\>/was/gi

i sẽ bỏ qua chữ hoa hay thường.

9. Search và replace hiện xác nhận confirm.

Ví dụ ta có đoạn test sau.

hello hello hello

Ta muốn chỉ thay đổi chữ hello thứ 2.

hello hi hello

Ta gõ :s/hello/hi/gc Ta sẽ thấy

replace with hi(y/n/a/q/l/^E/^Y)?

Ta chọn n(no) bỏ qua chữ hello đầu, chữ hello thứ 2 ta chọn y(yes), chữ cuối chọn n.

Ngoài ra ta có các tùy chọn như:

  • a: là thay đổi hết các chữ hello sang hi.
  • q: là thoát
  • l: là thay đổi 1 chữ hello đầu và thoát.
  • ^E: Ctrl+e là scroll up.
  • ^Y: Ctrl+y là scroll down.

Như vậy là ta biết cách dùng search và replace trong vim rồi nhé.