Cách tốt nhất để nhân tố lại một tên biến trong vim là gì?


8

Tôi biết có một cách để tìm kiếm và thay thế các lần xuất hiện khác nhau trên một tệp nguồn.

Nhưng có cách nào tốt hơn không nếu tôi đổi tên một biến ở một nơi thì nó cũng được đổi tên ở những nơi khác mà không cần tìm kiếm và thay thế hoặc thay thế?


Câu trả lời sẽ phụ thuộc vào ngôn ngữ. Trong một số cơ sở mã, có thể là thực tế khi viết một biểu thức chính xác phù hợp với chính xác của bạn.
aebabis

Câu trả lời:


13

Bạn chỉ có thể sử dụng quy trình làm việc thông thường searchreplace:

/original
cwreplaced
n.n.

Bạn cũng có thể tận dụng lợi thế của gnchuyển động:

/original<CR>
cgnreplaced<ESC>
.....

cgnsẽ cHange các nmẫu ext phù hợp, vì vậy thay vì sử dụng n.n.đến go to nextrepeatbạn có thể chỉ ..có phương tiện replace next.

gncó nghĩa là "tìm kiếm sự xuất hiện tiếp theo và bắt đầu lựa chọn trực quan về nó", bạn có thể đọc thêm về nó trên tài liệu : :h gn.


Bạn có thể vui lòng giải thích về chuyển động gn? Tôi còn khá mới với vim.
WitVault

3
Luôn luôn hỏi Vim trước : :help gn.
romainl

@ nobe4: Bạn có thể cải thiện câu trả lời của bạn. :) Người dùng có thể muốn thay thế bằng tất cả $ đầu tiên bằng $ thứ hai, không phải $ First_variable. Chúng ta có thể đi với \ <mẫu \> không? Hoặc, đề nghị một cách tốt hơn!
SibiCoder

6

Bạn có thể sử dụng thay thế:

:%s/original/replaced/g

Sẽ sxuất hiện trên toàn bộ tập tin ( %) originalbởi replaced. Và sẽ thay thế nhiều lần xuất hiện trên cùng một dòng g.

Nếu bạn không tự tin về việc tự động thay thế, bạn có thể thêm ccờ để yêu cầu xác nhận mỗi lần.


Tôi không muốn mù quáng để tìm kiếm và thay thế.
WitVault

3
Sau đó, ccờ là con đường để đi.
nobe4

2

Tôi muốn thêm một lựa chọn khác.

Bạn có thể làm /originalvà sau đó làm :%s//replacement. (Sử dụng /cở cuối nếu bạn muốn xác nhận).

Mặc dù bạn đang nhấn thêm 3 phím, nhưng điều này có lợi thế hơn là chỉ %s/original/replacementvì nó cung cấp một dấu hiệu trực quan rằng tìm kiếm của bạn là chính xác.

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.