Làm thế nào để đi đến kết thúc / thoát khỏi dấu ngoặc đơn của một dòng trong vim?


7

Tôi đã đọc giải pháp được trả lời trong /programming/11037825/vim-get-out-of-parentribution-brackets-etc . Đó không là gì ngoài lệnh Asẽ lấy đi của bạn ở cuối dòng.

Nhưng, yêu cầu của tôi là một cái gì đó khác nhau. Giả sử tôi có tệp chứa -
x = (3+5)/(2+1);
Khi bật con trỏ, +tôi muốn di chuyển con trỏ lên /hoặc trước ), nhưng không bật ;(Bạn có thể xem xét 'sau ký tự' thay vì 'trên ký tự').


1
một cái gì đó như thế này : nnoremap ,f /[)/]<cr>?
Christian Brabandt

@ChristianBrabandt Vâng, một cái gì đó tương tự này. Tuy nhiên, dấu ngoặc đơn được có thể khác nhau vì vậy tôi phải kiểm tra xem tôi đang ở ()hoặc {}hoặc []hoặc <>(mặc dù nó không phải là ngoặc đơn).
alrcal

Câu trả lời:


16

Tôi không rõ ràng 100% nếu đây là những gì bạn đang hỏi, nhưng tôi nghĩ bạn có thể đang tìm kiếm:

])

Điều này nhảy đến bao vây gần nhất ). Vì vậy, nếu con trỏ của bạn /ở bên dưới:

(2 / (3 + 5) * 9) 
   ^

Nó sẽ bỏ qua đầu tiên )và nhảy đến đây:

(2 / (3 + 5) * 9)
                ^

Ngoài ra, đối với trường hợp đơn giản hơn của bạn, %%cũng sẽ làm việc. Lần đầu tiên %nhảy đến mở đầu (, và lần thứ hai nhảy đến đối tác của nó, kết thúc ).

Xem:

  • :help ])
  • :help %

1
]} ]) [{ [(công việc nhưng [[]]không làm việc.
alrcal

2
@alhelal [[]]làm điều gì đó khác biệt: xem:h ]]
Giàu

2

Kết hợp plugin của tôi cung cấp các ánh xạ ]%[%giống như một phiên bản không phân biệt của ])/ ]} để đi đến một trong hai phần tử của một cặp đối sánh xung quanh. Vì nó sử dụng các ký hiệu được liệt kê trong matchpairs, nó hoạt động cho ()/ {}/ []theo mặc định và sẽ hoạt động cho <>nếu matchpairs<:>.

Filetypes cũng có thể chỉ định các cặp kết hợp nâng cao hơn (ví dụ: if/endiftrong vimscript), tương tự như các matchit plugin được phân phối với vim (ngoại trừ matchit dường như không được làm rõ và các ánh xạ này không hoạt động ).

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.