2010-01-18 33 views
36

Trong Vim, nếu tôi có mã như (Ruby):Di chuyển một cặp ngoặc đơn, dấu ngoặc, hoặc niềng răng trong Vim

anArray << [anElement] 

và con trỏ của tôi là trên [ đầu tiên, tôi có thể nhảy đến ] với phím % và tôi có thể xóa tất cả nội dung giữa cặp [] với d%, nhưng điều gì sẽ xảy ra nếu tôi chỉ muốn xóa [] để lại tất cả nội dung còn lại giữa hai. Nói cách khác, cách nhanh nhất là những gì để có được:

anArray << anElement 
+9

tôi sẽ làm 'xf]', nhưng nó không làm paren khớp. Hoặc, trước tiên hãy thực hiện kết hợp paren thủ công bằng '%', sau đó 'x' theo sau là hai dấu gạch chéo ngược, theo sau là' x'. –

+0

câu hỏi hay. Tôi là một người sử dụng vim prolific, và điều này đi lên theo thời gian, và tôi không có giải pháp tích hợp tốt. – Peter

+0

Tùy chọn thứ hai của Alok có tác dụng. – user2023370

Trả lời

42

Sử dụng các plugin Surround.vim cho Vim:

http://www.vim.org/scripts/script.php?script_id=1697

... bạn có thể loại bỏ delimiters quanh với ds<delimeter>.

Lắp đặt qua Vundler plugin:

Add:

Plugin 'tpope/vim-surround' 

đến file vimrc của bạn và chạy : PluginInstall

+0

Có lẽ nó chỉ là tôi, nhưng tôi không thể làm gì với các plugin. Nó quá phức tạp và phản trực giác. – I159

42

ma%x`ax (vị trí đánh dấu trong sổ đăng ký a, đi phù hợp paren, xóa char, đi đến đánh dấu a, xóa char).

EDIT:

%x``x làm điều tương tự (nhờ Alok for the tip)

+14

Như tôi đã nói trong bình luận chính của tôi, bạn không cần một nhãn hiệu thủ công: bạn có thể đi đến vị trí cuối cùng bởi hai backticks. Vì vậy,% x''x nhanh hơn. –

+0

Điều này tương tự như những gì tôi đã làm, nhưng đó là một số lượng lớn các phím nhấn cho trình soạn thảo được cho là rất hiệu quả. – Josh

+4

Tôi thích '%% x''x' tốt hơn vì bạn có thể ở bất cứ nơi nào bên trong các dấu ngoặc đơn. –

2

Những câu trả lời khác làm việc tốt nếu bạn muốn xóa delimiters một dòng tại một thời điểm.

Nếu mặt khác bạn muốn loại bỏ một chức năng và nó delimiters từ toàn bộ sử dụng file:

:%s/function(\(.*\))/\1/g 

thay thế function(arguments) với arguments ở khắp mọi nơi trong file.

4

Nếu bạn có vấn đề với dấu trỏ đến char đầu tiên của dòng hoặc với việc sử dụng% ...

di[vhp 

làm việc cũng ... Nó xóa phù hợp với [] dấu ngoặc, khi con trỏ là bất cứ nơi nào bên trong. '[' có thể được thay thế bằng '{' hoặc '('.

26

Người ta có thể tận dụng các đối tượng văn bản được tích hợp trong Vim (xem :help text-objects). ba hành động.

  1. Cut văn bản bên trong dấu ngoặc vuông.

    di[ 
    
  2. Chọn (trống) dấu ngoặc vuông.

    va[ 
    
  3. Dán văn bản cắt trên chúng.

    p 
    

Tổng cộng nó mang lại cho

di[va[p 
+2

Cảm ơn bạn đã chứng minh cách không phải plugin để thực hiện việc này! Tuyệt vời cho những người trong chúng ta làm việc trên các hệ thống nhúng. – ijustlovemath

Các vấn đề liên quan