Tôi biết đó là một câu hỏi cũ và cách của @ mykola-golubyev rõ ràng là câu trả lời tốt nhất cho trường hợp cụ thể trong câu hỏi OP (mà tôi cho rằng đó là đi qua mã bị xáo trộn nơi bạn có thể có nhiều khối có cùng tên var) ; nhưng với tên câu hỏi như vậy, nhiều người đến đây từ tìm kiếm trên google có thể tìm cách đổi tên các biến trong VIM ít tình huống cụ thể hơn - và những cách đó có thể ngắn gọn hơn
Tôi không có ai đề xuất theo cách này:
*
:s//
TÊN MỚI /gc
Điều *
này cũng giống như gn
- nó tìm kiếm lần xuất hiện tiếp theo của từ dưới con trỏ VÀ nó trở thành mẫu được tìm kiếm cuối cùng, vì vậy khi bạn bỏ qua mẫu tìm kiếm trong lệnh thay thế, VIM giả định đây là mẫu cần tìm kiếm.
Đối với một lượng nhỏ bản sao var, một bản thậm chí còn nhanh hơn:
*
cw
NEWNAME <esc>
sau đó lặp lại n.
cho các lần xuất hiện khác
Tìm kiếm sự xuất hiện, cw
là lệnh cho từ thay đổi , n
chuyển đến lần xuất hiện tiếp theo của cụm từ được tìm kiếm cuối cùng và .
lặp lại lệnh cuối cùng ( thay đổi từ thành NEWNAME )
(Tín dụng cho tôi khi biết tất cả những điều này được chuyển đến @doomedbunnies trên Reddit )
Một thủ thuật thú vị khác là: ( tín dụng cho @ nobe4 )
*
cgn
NEWNAME <esc>
sau đó lặp lại .
cho các lần xuất hiện khác
cgn
là "thay đổi bất cứ điều gì là kết quả của (tìm lần xuất hiện tiếp theo)". Bây giờ đây là lệnh cuối cùng , bạn không cần phải n
đi đến lần xuất hiện tiếp theo, do đó, ít nét hơn một lần nữa, và quan trọng hơn, không cần phải thay thế n
và .
. Nhưng, rõ ràng, điều này có nhược điểm là không có cách nào để bỏ qua một lần xuất hiện.
Dưới đây là một số lợi ích:
- không có ánh xạ, không có .vimrc (hoặc init.vim), vì vậy bạn có thể sử dụng nó trong bất kỳ bản sao VIM nào mà bạn gặp (ví dụ: một tác vụ nhanh trên một số VPS hoặc máy của bạn bè bạn, nơi cấu hình VIM theo cách của bạn sẽ đánh bại mục đích 'nhanh chóng' )
- sử dụng
*
hoặc gn
để lựa chọn từ rất nhanh chóng - chỉ một lần nhấn phím (tốt, giả sử 1,5)
- bằng cách sử dụng
*
hoặc gn
đảm bảo rằng bạn không nhận được bất kỳ kết quả phù hợp nào bên trong các từ khác, giống như :%s/<C-R>//gc
vậy. Nhịp đập gõ :%s/\<OLDNAME\>/NEWNAME/gc
bằng tay: Cá nhân tôi có xu hướng quên sử dụng những \<
thứ để giới hạn kết quả phù hợp với chỉ toàn bộ từ.
- Không sử dụng phạm vi sẽ chỉ dẫn đến một vài lần đánh thêm
n
để bỏ qua các trận đấu không mong muốn - có thể thậm chí còn ít hơn số lần đánh phụ cần thiết để giới hạn phạm vi. Trong các trường hợp giới hạn bình thường, các biến của bạn rất có thể đã được bản địa hóa phần nào vào một khối mã nhất định.