Tôi đang viết một tập lệnh mà tôi muốn kiểm soát tìm kiếm theo chương trình và làm nổi bật chúng. Các kết quả của hàm search() không được đánh dấu (tôi nghĩ), vì vậy việc sử dụng hàm đó không được sử dụng cho tôi.Kiểm soát tìm kiếm và đánh dấu Vim từ tập lệnh
Điều tôi muốn làm là sử dụng lệnh 'bình thường /' để tìm kiếm biến số, nhưng điều đó dường như không đơn giản. Tôi có thể kịch bản lệnh:
execute 'normal /' . my_variable . '\<CR>'
(hoặc các biến thể khác như đề xuất trong mũi vim đây: http://vim.wikia.com/wiki/Using_normal_command_in_a_script_for_searching)
nhưng nó không làm gì cả. Tôi có thể thấy cụm từ tìm kiếm chính xác trong dòng lệnh sau khi thực thi dòng lệnh, nhưng tiêu điểm nằm trong tài liệu, thanh ghi tìm kiếm không bị thay đổi và con trỏ chưa thực hiện bất kỳ tìm kiếm nào. (Dường như là < CR> không được nhập, mặc dù không có lỗi nào được ném - và có, tôi đã thử sử dụng chữ^M quá.)
Tôi ít nhất có thể kiểm soát thanh ghi tìm kiếm bằng cách thực hiện này:
execute 'let @/ ="' . a:term .'"'
và sau đó là điều hiển nhiên có vẻ là để làm một:
normal n
Nhưng điều đó 'n bình thường' không làm bất cứ điều gì nếu tôi chạy nó trong một kịch bản. Đặt thanh ghi tìm kiếm không hoạt động, nếu tôi bấm 'n' theo cách thủ công sau khi tập lệnh chấm dứt tìm kiếm xảy ra (và đánh dấu xuất hiện, vì hlsearch đang bật). Tôi thậm chí không quan tâm nếu con trỏ được định vị, tôi chỉ muốn mẫu đăng ký được đánh dấu. Nhưng các kết hợp khác nhau của 'set hlsearch' trong tập lệnh cũng không hoạt động.
Tôi biết tôi có thể sử dụng 'match()', nhưng tôi muốn làm cho nó hoạt động với đánh dấu tìm kiếm thông thường và tôi tự hỏi mình đang làm gì sai. Nó phải là một cái gì đó đơn giản nhưng tôi không nhìn thấy nó. Cảm ơn vì bất kì sự giúp đỡ.
Tôi đã thử lệnh tìm kiếm của mình. 'execute" normal/^ --- \ "' hoạt động. Nhưng 'thực thi 'bình thường/^ --- \ '' thì không. –
ppan