Trong Intellij Idea, có một tính năng. Giả sử tôi đã sử dụng biến số myCamelCase
ở đâu đó trong mã của tôi. Sau đó, nếu tôi nhập mCC
và nhấn Ctrl - Nhập hoặc một số tổ hợp phím như vậy, nó sẽ mở rộng thành myCamelCase
. Có cái gì đó tương tự trong Vim?Mở rộng CamelCase trong Vim như Intellij Idea?
Trả lời
Được rồi, hãy tha thứ cho tôi để trả lời hai lần, nhưng vì lần thử đầu tiên của tôi bị mất điểm, tôi sẽ có một bước khác. Điều này phức tạp hơn tôi nghĩ, nhưng có thể không phức tạp như tôi đã làm nó (!).
Điều này hiện được sửa đổi để đề xuất tất cả các tên biến phù hợp.
Trước hết, đây là một chức năng để tạo ra các 'MCC' viết tắt từ chuỗi các 'myCamelCase':
function! Camel_Initials(camel)
let first_char = matchstr(a:camel,"^.")
let other_char = substitute(a:camel,"\\U","","g")
return first_char . other_char
endfunction
Bây giờ, đây là một chức năng mà phải mất một chữ viết tắt ('MCC') và quét bộ đệm hiện tại (lùi từ dòng hiện tại) cho "từ" có chữ viết tắt này. Một danh sách tất cả các trận đấu sẽ được trả về:
function! Expand_Camel_Initials(abbrev)
let winview=winsaveview()
let candidate=a:abbrev
let matches=[]
try
let resline = line(".")
while resline >= 1
let sstr = '\<' . matchstr(a:abbrev,"^.") . '[a-zA-Z]*\>'
keepjumps let resline=search(sstr,"bW")
let candidate=expand("<cword>")
if candidate != a:abbrev && Camel_Initials(candidate) == a:abbrev
call add(matches, candidate)
endif
endwhile
finally
call winrestview(winview)
if len(matches) == 0
echo "No expansion found"
endif
return sort(candidate)
endtry
endfunction
Tiếp theo, đây là một chức năng tùy chỉnh hoàn thành mà đọc từ dưới con trỏ và gợi ý các trận đấu được trả về bởi các chức năng trên:
function! Camel_Complete(findstart, base)
if a:findstart
let line = getline('.')
let start = col('.') - 1
while start > 0 && line[start - 1] =~ '[A-Za-z_]'
let start -= 1
endwhile
return start
else
return Expand_Camel_Initials(a:base)
endif
endfunction
Để tận dụng điều này, bạn phải xác định "completefunc":
setlocal completefunc=Camel_Complete
Để sử dụng chèn chế độ hoàn thành, loại CTRL-XCTRL-U, nhưng tôi thường bản đồ này để CTRL-L:
inoremap <c-l> <c-x><c-u>
Với mã này trong vimrc của bạn, bạn nên tìm dược đưa vào mCC
tiếp theo CTRL-L sẽ thực hiện thay thế dự kiến. Nếu không tìm thấy mở rộng phù hợp, chữ viết tắt sẽ không thay đổi.
Mã không chặt chẽ, nhưng nó hoạt động trong tất cả các trường hợp đơn giản mà tôi đã thử nghiệm. Hy vọng nó giúp. Hãy cho tôi biết nếu có bất cứ điều gì cần làm sáng tỏ.
Có một plugin cho điều này trong Vim gọi là vim-abolish. Sử dụng bản đồ crc
để mở rộng thành vỏ lạc đà.
- 1. .vimrc cho plugin vim của IntelliJ Idea
- 2. Plugin giống như Ghostdoc cho IntelliJ IDEA
- 3. Có thể "mở rộng" IntelliJ sao cho tôi có thể mở tệp hiện tại trong VIM
- 4. Bảng Ctrl trong IntelliJ IDEA
- 5. AOSP và IntelliJ IDEA
- 6. Mở rộng Vim (qua Python)?
- 7. TestNG với IntelliJ IDEA: Cách sử dụng tệp testng.xml trong IntelliJ IDEA 9
- 8. IntelliJ IDEA backspace và indention?
- 9. Gỡ lỗi JSP trong IntelliJ IDEA
- 10. Cách Proguard hoạt động trong Intellij Idea?
- 11. Lưu hành động trong IntelliJ IDEA
- 12. Cảnh báo trong IntelliJ IDEA v12
- 13. Ký hiệu Hungary trong Intellij IDEA
- 14. Làm cách nào để CamelCase kích hoạt Tìm kiếm Vim
- 15. Module IntelliJ IDEA và PlayFramework
- 16. Sử dụng JUnit RunListener trong IntelliJ IDEA
- 17. IntelliJ IDEA: Di chuyển dòng?
- 18. Tìm chú thích trong IntelliJ IDEA
- 19. Stack Trace Console trong IntelliJ IDEA
- 20. Gỡ lỗi Widget Android Trong Intellij IDEA
- 21. Tạo Servlets trong IntelliJ IDEA 12 Ulimate
- 22. Cấu hình Tomcat trong IntelliJ IDEA
- 23. Tính năng ẩn IntelliJ IDEA
- 24. Thay đổi các phần của từ CamelCase trong vim
- 25. Chạy lệnh mvn sử dụng IntelliJ IDEA
- 26. Intellij IDEA Không thể Hoàn tác
- 27. Intellij IDEA 12 phản hồi chậm
- 28. thiết lập dự án Grails trong IntelliJ IDEA
- 29. Có thể xóa tệp .class khỏi danh sách tệp đang mở trong IntelliJ IDEA không?
- 30. Mylyn thay thế cho IntelliJ IDEA?
Tuyệt vời! Đó là tất cả tôi có thể nói. Tôi vẫn tham lam/lười biếng đủ để yêu cầu bạn nhiều hơn. Nếu có nhiều hơn một mở rộng có thể: ví dụ: myCamelCase myCamelCart, cái cuối cùng được chọn. Thay vào đó, nó có thể được thực hiện để cư xử như hoàn thành từ khóa Ctrl-P trong vim? Một lần nữa, tuyệt vời! – dharm0us
Tôi rất vui vì nó đã hoạt động! Xử lý nhiều trận đấu chỉ là vấn đề nhận Expand_Camel_Initials() để trả về một danh sách các giải pháp và sau đó thiết lập 'completefunc' để cho phép bạn lựa chọn giữa lúc đó. Tôi sẽ thử và có một cái nhìn vào nó vào cuối tuần này. –
Được rồi, nó không đau đớn như tôi nghĩ ... Tôi đã chỉnh sửa câu trả lời của tôi và bây giờ nó sẽ hoạt động như bạn muốn. Hãy cho tôi biết nếu bạn có bất kỳ vấn đề gì (tôi chưa có cơ hội để kiểm tra nó đúng cách). –