vi phím tắt để xóa cho đến khi ký tự X tiếp theo


194

Tôi hiểu rằng vi có các phím tắt để xóa các ký tự, từ và dòng với các tùy chọn khác nhau.

Tuy nhiên, tôi không thể tìm thấy điều này:

  • xóa từ con trỏ đến ký tự được chỉ định tiếp theo

Ví dụ: tôi có thể gõ du"mong muốn trình chỉnh sửa "xóa cho đến khi "tìm thấy ký tự tiếp theo "

Gần nhất tôi biết là d9wở đâu 9là số chữ xóa.

Có ai biết nếu điều này là có thể?


Nếu bạn quan tâm đến Vi và Vim, họ có trang SE riêng của họ ngay bây giờ: Vi và Vim
món tráng miệng

Câu trả lời:


303

Sử dụng dtc, trong đó c là bất kỳ ký tự nào, ví dụ cho bạn, bạn muốndt"

Điều này sẽ xóa tối đa nhưng không bao gồm c .

Nếu bạn có:

delete until exclamation point!

Và con trỏ ở không gian đầu tiên và bạn gõ dt!, bạn sẽ nhận được:

delete!

Ngoài ra dfc.

Điều này sẽ xóa tối đa bao gồm c .

Sử dụng df!trên cùng một ví dụ ở trên sẽ cung cấp cho bạn:

delete

Chỉ là về bất cứ "chuyển động" có thể được sử dụng cho d, c, yvà các lệnh tương tự.


7
Có lẽ là ghi nhớ là t cho "đến"? Câu trả lời tốt đẹp.
lật đổ

15
Bạn cũng có thể xóa sang phiên bản trước của một ký tự với phiên bản viết hoa của các lệnh di chuyển. Có lẽ hữu ích hơn cho dấu phẩy - dT,dF,.
joelostblom

3
Điều này không hoạt động trên nhiều dòng.
0xcaff

3
Điều này có thể được thực hiện trên một loạt các dòng?
Ray

2
Để thực hiện một cái gì đó tương tự trên một loạt các dòng, một tìm kiếm thông thường (như trong câu trả lời của zpletan) có thể được thực hiện: d/wordtìm kiếm lên đến word. Nó phải được theo sau bởi enter (để đóng tìm kiếm).
Eric O Lebigot

59
  • Để xóa chuyển tiếp lên tới loại 'X' dtX

  • Để xóa chuyển tiếp thông qua loại ký tự 'X' dfX

  • Để xóa ngược kiểu ký tự 'X' dTX

  • Để xóa lùi thông qua loại ký tự 'X' dFX


30

Đầu vào dt # (không phải lệnh: sử dụng nó như một chuyển động như G)

sẽ xóa từ con trỏ cho đến khi không bao gồm #. Bạn có thể thay thế bất kỳ char nào cho #.


2
Đây là câu trả lời đúng! df # cũng sẽ xóa #.
Việt Nam

đã tìm kiếm cái này, cái này thật tuyệt
Nadeem Khedr

18

Có vẻ như @Arcege đã trả lời câu hỏi, nhưng tôi đã d/lxóa cho đến khi nhân vật l; các nhân vật khác cũng sẽ làm việc.


3
Điều này hoạt động cho các công cụ trên dòng mới.
jasonszhao

Lưu ý: điều này phải được theo sau bởi Enter.
Eric O Lebigot

6

wchuyển sang từ sau. ldi chuyển đến các charactor sau.

Vì vậy, nó d9lsẽ xóa 9 ký tự tiếp theo.


2
Đóng, llà phím mũi tên phải của Vim, vì vậy bạn thực sự đang xóa đúng. Ngược lại, d9hsẽ xóa 9 ký tự còn lại.
Walf
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.