2010-12-28 24 views
13

Sử dụng vim, tôi thấy cw rất tiện dụng để thay đổi toàn bộ từ. Sự phân tách các lệnh chuyển động và động từ hành động của Vim tạo nên sự kết hợp rất mạnh mẽ. Tôi chỉ cần thay đổi DefaultHandler thành ContentHandler. Tôi tự nhiên nghĩ về nó như là "thay đổi lên chữ hoa kế tiếp", nhưng tôi không thể tìm thấy một lệnh chuyển động chuyển từ một chữ hoa này sang chữ cái khác.Thay đổi các phần của từ CamelCase trong vim

Trong trường hợp này, tôi có thể đã sử dụng ctH, nhưng có cách nào để thay đổi (hoặc xóa, vv) phần đầu tiên của từ CamelCase không phụ thuộc vào chữ cái hoa nào tiếp theo?

+0

thể trùng lặp của [Làm thế nào tôi có thể cấu hình vim để lệnh phong trào sẽ bao gồm dấu gạch dưới và CamelCase , nhưng hoàn thành sẽ bỏ qua chúng?] (http://stackoverflow.com/questions/1279462/how-can-i-configure-vim-so-that-movement-commands-will-include-underscores-and-c) (như đã đề cập trong câu trả lời của Luc, mà tôi nghĩ rằng nên là một bình luận) – yshavit

Trả lời

2

Vim không cung cấp đối tượng văn bản từ CamelCase theo mặc định, vì vậy, chúng tôi sẽ tự mình tạo . Mới tốt là chúng ta không cần phải phát minh lại bánh xe từ một plugin đã tồn tại và chúng ta có thể sử dụng nó như là một cơ sở: camelCaseMotion

kịch bản này định nghĩa chuyển động ,w, ,b,e (tương tự như w, b, e), không di chuyển từ-khôn ngoan (tiến/lùi), nhưng Lạc đà khôn ngoan; tức là giới hạn từ và chữ in hoa. Vấn đề là nó không xác định một đối tượng văn bản tương tự như iw để chọn toàn bộ một từ. Vì vậy, hãy tạo :

Để hoàn tất, đối tượng văn bản cần hai định nghĩa: một cho chế độ hình ảnh và một chế độ khác cho chế độ chờ xử lý. Dưới đây là định nghĩa của chúng tôi (để thêm vào các .vimrc):

vmap ,i <Esc>l,bv,e 
omap ,i :normal v,i<CR> 

Như bạn có thể thấy chúng tôi làm cho việc sử dụng của ,b,e chuyển động được xác định bởi các plugin.

Định nghĩa đầu tiên cho phép nhập ,i khi chúng tôi đang ở chế độ trực quan và nó sẽ chọn "từ camelCase bên trong" hiện tại. (Chuyển động l là một cách giải quyết để luôn có được chữ con trỏ trên. Nếu chúng tôi nhận được trước đó một khi con trỏ là chữ cái đầu tiên của một từ)

Định nghĩa thứ hai sử dụng đầu tiên một đến để khai thác như d hoặc c làm việc với ,i

Sau khi chúng tôi đã cài đặt plugin và thêm vào các định nghĩa để chúng tôi .vimrc chúng ta có thể làm những gì bạn muốn.Ví dụ nếu tôi lấy ví dụ này:

DefaultHandlerWord 

Nếu con trỏ của tôi là trên bức thư n của Handler tôi có thể sử dụng:

  • ,e đi đến lá thư cuối cùng của Handler
  • ,b đi đến chữ cái đầu tiên của Handler
  • ,w để chuyển đến chữ cái đầu tiên của Word
  • d,i xóa Handler và nhận được chỉ DefaultWord
  • c,i xóa Hanlder và có được một cơ hội để thay thế nó bằng một từ khác
+0

Ngoài ra đối với câu hỏi về những người thân Vim có thể được quan tâm bởi [trang web trao đổi stack chuyên dụng] (http://vi.stackexchange.com/). – statox

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