Làm thế nào để sử dụng thay thế trên đăng ký?


7

Giả sử tôi đã đăng ký có chuỗi được lưu trữ trong đó, nhưng tôi muốn sử dụng lệnh thay thế để thay đổi.

Ví dụ: tôi có bảng 5x5 html:

let @t='<table>'.repeat('<tr>'.repeat('<td>_</td>',5).'</tr>',5).'</table>'

và tôi muốn thay thế giữ chỗ ( _) bằng một số dữ liệu khác một cách lý tưởng bằng cách sửa đổi thanh ghi hiện có (không gán cho người khác).

Tôi đã thử cú pháp sau:

"ts/_/test/g
"@ts/_/test/g " with modifiable set

không đưa ra bất kỳ lỗi nào, nhưng nó không hoạt động như mong đợi (theo cách tương tự như tiền tố với %các tác phẩm).

Cách thích hợp để làm điều đó là gì?


Bạn trông giống như bạn muốn một cái gì đó giống như Emmet .
Peter Rincker

2
Lưu ý rằng đó :help function-listlà một trang rất hữu ích ;-) Ngoài ra còn có một số thẻ khác trong trang đó, chẳng hạn như string-functions.
Martin Tournoij

Câu trả lời:


11

Các lệnh ex hoạt động trên các nội dung bộ đệm; đối với nội dung đăng ký (hoặc biến), bạn cần sử dụng hàm Vimscript tương ứng (nếu nó tồn tại).

Đối với :substitute, tương đương là substitute()(đó là dễ dàng, phải không?) Vì vậy:

:let @t = substitute(@t, '_', 'test', 'g')

3
substitute()không hoàn toàn tương đương với :substitute; hàm hoạt động như thể 'magic'được đặt và 'cpoptions'trống, trong khi lệnh sẽ quan sát các giá trị do người dùng đặt.
tommcdo

5

Ngoài việc sử dụng let-statement và xử lý vim-script, bạn cần dán nó vào một bộ đệm và sau đó kéo nó trở lại thanh ghi:

  1. "tp
  2. :.s/_/test/g
  3. "tdd
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.