Làm thế nào để thay thế một từ duy nhất dưới con trỏ?


144

Làm cách nào để thay thế một từ dưới con trỏ trong Vim.

Vì vậy, thay vì sử dụng dwsau iđó từ đó và sau đó Esc, có một sự kết hợp đơn giản hơn để thay thế từ dưới con trỏ?

Câu trả lời:


251
ciw

(thay đổi từ bên trong) sẽ thay đổi toàn bộ từ dưới con trỏ. So sánh với

cw

sẽ chỉ thay đổi từ từ vị trí con trỏ hiện tại . Để biết thêm thông tin xem câu hỏi / câu trả lời SO này .


Làm thế nào để đối phó với tình huống nếu từ đó có dấu chấm hoặc dấu gạch chéo (ví dụ /usr/bin/bashhoặc 1222.333)? Có vẻ như phiên dịch vim /và ở .cuối từ và sẽ không chọn toàn bộ chuỗi.
Alexander Cska

85

Tôi thường thấy mình muốn thay thế một từ bằng một từ khác mà tôi đã kéo từ nơi khác đến. Vấn đề với các giải pháp khác là nếu bạn cố gắng thay đổi một từ, thì lần dán tiếp theo của bạn sẽ từ mà bạn đã xóa bằngcw .

Hãy thử như sau:

1 "This first word should overwrite the second"

yiw     yank inner word (copy word under cursor, say "first").
...     Move the cursor to another word (say "second").
viwp    select "second", then replace it with "first". 

Hy vọng đó là những gì bạn đang tìm kiếm.


7
Nó hoạt động độc đáo nhưng chỉ khi thay thế phải được thực hiện once. Nếu tôi phải thay thế vài từ đầu second' by tiên (trong ví dụ của bạn), từ được sao chép sẽ trở thành secondsau lần thay thế đầu tiên.
ViFI

32

ciw

c   change
iw  inner word

Thao tác này sẽ xóa từ dưới con trỏ (ngay cả khi con trỏ ở đâu đó ở giữa từ) và vào chế độ chèn.


Xem thêm tài liệu của Vim để tham khảo:

:help c
:help text-objects

17

Nếu bạn muốn thay đổi một từ bằng một từ đã được đánh dấu trước đó, có một giải pháp khác viwp(một khi bạn đã lấy được từ đầu tiên).

ciwxóa từ trước đó và đưa bạn vào chế độ chèn. Nhưng sau đó bạn có thể sử dụngctrl+r, 0 để chèn nội dung của thanh ghi 0 (có chứa từ được đánh dấu trước đó).

Vì thế:

yiw
[move to next word]
ciw
ctrl+r
0

Điều này hoạt động tốt hơn viwpbởi vì sau lần sử dụng đầu tiên, bạn có thể liên tục thực hiện thay thế bằng .. Nó cũng không chuyển sang chế độ trực quan và làm nổi bật ngắn gọn.


1
Không chắc chắn điều bạn muốn nói là nó không thay đổi chế độ, dường như ngược lại, nhưng có lẽ đó là điều bạn muốn, vẫn ở chế độ chèn. Nhưng một lợi thế lớn là điều này (trái với viwp) có thể được thực hiện nhiều lần chỉ với một lần kéo. Cảm ơn!
Palo

Oh bạn nói đúng, tôi đã nghĩ đến việc chuyển sang chế độ trực quan, chỉnh sửa. Tôi đã không nhận ra rằng đó là một hạn chế viwp- thậm chí .không sao chép nó.
Connor

3
Đây là giải pháp tốt nhất khi chúng ta đã sử dụng từ thay thế.
mljrg

1
Đây là câu trả lời! Khả năng sử dụng .với điều này là tuyệt vời!
mờ

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.