Thêm dấu ngoặc đơn xung quanh văn bản được tô sáng trong Vim


14

Có chức năng nào trong Vim cho phép thêm dấu ngoặc đơn xung quanh văn bản được tô sáng không?

Ví dụ, nếu tôi nhấn mạnh n = getchar()vào if (n = getchar() == '\n'), tôi sẽ muốn đặt dấu ngoặc đơn xung quanh đó.

Câu trả lời:


18

Bạn cần một plugin tuyệt vời và phải có bao quanh plugin . Sau đó, nó sẽ vui vẻ làm những gì bạn muốn nếu bạn chọn văn bản và nhập Sb(dấu ngoặc nhọn) hoặc S)(lưu ý viết hoa S!).

Nó thực sự có thể làm rất nhiều thứ xung quanh: nhiều trích dẫn, thẻ, v.v. Nó cho phép bạn đặt con trỏ vào từ được trích dẫn kép và thay đổi dấu ngoặc kép thành dấu ngoặc đơn bằng cách gõ: cs"'(thay đổi bao quanh "thành '). Hoặc bạn hoàn toàn có thể xóa dấu ngoặc kép bằng cách gõ ds"(xóa-Surround ").

Đọc tài liệu theo liên kết, nó thực sự tuyệt vời!


1
Bạn đã không giải thích làm thế nào để làm điều đó với lựa chọn, mặc dù. Tôi đã được dẫn đến đây vì nó không rõ ràng ngay lập tức.
JackHasaPal

@JackHasaPal, ý bạn là gì tôi không giải thích làm thế nào với lựa chọn đó? Câu thứ hai trong câu trả lời của tôi nói:> Sau đó, nó sẽ vui vẻ làm những gì bạn muốn nếu bạn chọn văn bản và gõ sb(dấu ngoặc nhọn), hoặc s).
Dmitry Frank

1
Vì vậy, bạn đã làm. Mặc dù vậy, không hoạt động với tôi, nhấn schỉ xóa lựa chọn và vào chế độ chèn.
JackHasaPal

1
Điều đó có nghĩa là plugin "bao quanh" mà tôi đã đề cập trong câu trả lời của mình không được cài đặt chính xác.
Dmitry Frank

Awsome thực sự. Tôi đã sử dụng nó một thời gian và có thể đặt cược.
biocyberman

20

Để thêm vào gợi ý của Dmitry về plugin bao quanh , việc thêm dấu ngoặc đơn xung quanh văn bản được tô sáng có thể được thực hiện bằng lệnh sau:

xi()<Esc>P

Bạn có thể đặt bản đồ ở chế độ trực quan bằng cách sử dụng (ví dụ) \sbằng cách thêm phần sau vào ~/.vimrctệp của mình :

xnoremap <leader>s xi()<Esc>P

1
Đây trông giống như một giải pháp tốt đẹp và đơn giản. Nếu tôi không tìm thấy bất kỳ vấn đề nào với vấn đề này trong tương lai, tôi sẽ thích vấn đề này hơn các plugin bổ sung. Cảm ơn!
Zelphir Kaltstahl

3
Đó là một giải pháp tốt, nhưng không hoàn toàn bằng việc sử dụng plugin vòm vì nó không hoạt động nếu bạn chọn toàn bộ dòng (sử dụng Vthay vì v). Trong trường hợp này, nó chỉ dán các dòng bên dưới parens của bạn.
Rohan Orton

1

lh-ngoặc đơn giản liên kết (để bao quanh lựa chọn với dấu ngoặc. Không giống như bao quanh, nó không tuân theo triết lý đóng khóa thông thường của vim. Thay vào đó, cần ít chìa khóa hơn.

Nếu không, có nhiều cách để tiến hành. Nếu bạn không phiền làm hỏng sổ đăng ký không tên, bạn cũng sử dụng s(^R")<esc>( ^Rnhư CTRL-R)


0

Dựa trên câu trả lời của dotancohens, tôi đặt câu hỏi sau .vimrc:

xnoremap <leader>( <ESC>`>a)<ESC>`<i(<ESC>

Bạn có thể dễ dàng tạo các ánh xạ tương tự cho [], {}, v.v. Nó hoạt động bằng cách nhảy đến điểm đánh dấu bắt đầu và kết thúc được đặt ngầm sau khi kết thúc chế độ trực quan. Bằng cách này, việc chọn toàn bộ các dòng sẽ thêm các parens ở đầu / cuối của dòng đầu tiên / cuối cùng; nó sẽ không ghi đè đăng ký yank của bạn; và nó sẽ rời khỏi con trỏ ngay trước khi mở paren.

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.