Sự khác biệt giữa w và W trong chế độ thoát của vim là gì?


19

Tôi đang xem các lệnh quickref giúp vim để di chuyển con trỏ. Những dòng sau làm tôi bối rối vì tôi thấy cả hai đều hoạt động giống nhau. Một số người có thể giải thích cho tôi sự khác biệt với một ví dụ.

N  w            N words forward
N  W            N blank-separated WORDS forward

Câu hỏi tương tự cũng đúng cho e và E.

Câu trả lời:


34

Theo tờ cheat này, nó dường như đi xuống dấu câu.

w   jump by start of words (punctuation considered words)
W   jump by words (spaces separate words)
e   jump to end of words (punctuation considered words)
E   jump to end of words (no punctuation)

Thí dụ

sử dụng bản demo w

          ss của w

sử dụng bản demo W

          ss của W

Lưu ý trong bản demo đầu tiên làm thế nào khi wđược nhấn liên tục mà con trỏ đáp xuống dấu chấm câu, trong khi trong bản demo thứ 2, dấu chấm câu bị bỏ qua. Đây là sự khác biệt giữa các lệnh viết thường và tương đương chữ hoa của chúng.


@slm: cảm ơn rất nhiều vì một bản demo tuyệt vời như vậy. với bản demo như vậy, không cần phải đọc ans nữa
rahul.deshmukhpatil

5

Nó thực sự khá đơn giản, wchỉ cần bỏ qua từ tiếp theo, nhưng bất kỳ loại dấu câu hoặc khoảng trắng nào cũng phá vỡ các từ. Wgiống như lệnh từ tiếp theo có độ mạnh công nghiệp, các từ chỉ được phân định bởi khoảng trắng, có thể là tab, dấu cách hoặc dòng mới. wcũng dừng lại ở dấu chấm phân cách, trong trường hợp bạn muốn xử lý vấn đề đó.

Tôi thấy sự khác biệt hữu ích thường xuyên nhất với tên máy chủ:

birdman.cartoons.fictional.com # Fictional host

Với w, bạn dừng lại trên mỗi phần của tên máy chủ và dấu chấm. Wchỉ cần bỏ qua toàn bộ tên máy chủ và đi vào #. Cả hai cũng áp dụng cho dcđể xóa và thay đổi từ.

Nếu được định vị ở đầu dòng trên, nếu bạn muốn thay thế birdman.cartoonsbằng thứ khác, bạn sẽ sử dụng 3cwđể thay thế cả hai phần đầu tiên và dấu chấm ở giữa. Bạn không thể làm điều đó Wmà không cần gõ lại toàn bộ tên máy chủ.


2

Đó là một sự khác biệt được hiểu rõ nhất bằng cách xem xét cách chấm câu có thể ảnh hưởng đến khái niệm của Vim về những gì phân định một từ.

Trong trường hợp văn bản ví dụ này:

This line is space separated with no commas
however, this line is—note—comma, separated,see

wsẽ vui vẻ bỏ qua chữ cái đầu tiên của mỗi từ trong dòng đầu tiên, vì chỉ có không gian để thương lượng. Nó sẽ thất bại nặng nề trên dòng 2 với dấu câu, giảm bớt các chữ cái đầu tiên của mỗi từ dấu phẩy và dấu gạch ngang. Để chuyển từ từ này sang từ khác trên dòng 2, bạn sẽ cần sử dụng Shiftw1 .

1. Ngay cả khi đó, Vim thấy "là chú thích dấu phẩy" là một từ duy nhất.


1

Sự khác biệt có thể được tìm thấy trong các trang trợ giúp nội bộ của vim. Trước tiên hãy lấy mô tả về w và W với :helpw hoặc :help W:

  • w [đếm] từ phía trước. | độc quyền | chuyển động.
  • W [tính] TỪ chuyển tiếp. | độc quyền | chuyển động.

Bây giờ chúng tôi muốn biết định nghĩa của từ và WORD là gì. Tra cứu hướng dẫn một lần nữa với :help word:help WORD, chúng tôi tìm thấy chúng.

  • Một từ bao gồm a sequence of letters, digits and underscores, hoặc a sequence of other non-blank characters, separated with white space(dấu cách, tab,). Điều này có thể được thay đổi với tùy chọn 'iskeyword'. Một dòng trống cũng được coi là một từ.
  • Một WORD bao gồm a sequence of non-blank characters, separated with white space. Một dòng trống cũng được coi là một WORD.
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.