2012-03-08 31 views
6

Khi chỉnh sửa JavaScript, tôi thường phải làm điều này:Vim và thụt đầu dòng với dấu ngoặc/niềng răng

function myFunc() { 
    // func body here 
} 

Tôi đã thử một vài plugins khung-đóng như Tự động đóng và vrackets, nhưng khi tôi đến mã như ở trên, tất cả họ đều làm điều này:

function myFunc() {<CR> 
|} 

làm thế nào tôi có thể làm cho Vim chèn một trước khung khi tôi đi đến dòng sản phẩm mới, và thụt con trỏ đúng như vậy:

function myFunc() {<CR> 
    |<CR> 
} 

Có giống như một plugin hoặc một cái gì đó thực hiện điều này?

+0

Plugin [delimitMate] (https://github.com/Raimondi/delimitMate) cung cấp tùy chọn cho IIRC này. –

+0

@Randy: Cấu hình vim của tôi phải bị nguyền rủa hoặc một cái gì đó. delimitMate sẽ không làm mở rộng CR ... – hayavuk

+1

Mặc dù thread này khá cũ, tôi vẫn muốn thêm rằng delimitMate không có một tùy chọn để làm điều này: chỉ cần thêm 'let g: delimitMate_expand_cr ​​= 1' vào .vimrc của bạn. Xem ': help delimitMate' để có thêm tùy chọn. – jasperge

Trả lời

2

Tôi có dòng này trong ~/.vimrc tôi:

inoremap <C-Return> <CR><CR><C-o>k<Tab> 
+0

Vì một lý do nào đó, nó không làm gì cho tôi ... Có thể là một xung đột với một plugin. – hayavuk

+0

Khó nói. Ý bạn là "nó không làm gì cho tôi"? Nó có làm gì không? Gì? – romainl

+0

Tôi có nghĩa là nó không tạo ra bất kỳ sự khác biệt nào cho dù tôi có điều đó trong vimrc hay không ... Điều đó thật kì lạ. Tôi đoán là một số plugin ghi đè lên ánh xạ. – hayavuk

1

Tôi có thể thoát khỏi cơ sở, nhưng bạn đã thử sử dụng lệnh viết tắt chưa?

:ab {} {<cr>}<esc>ko 

Tất nhiên, tôi có thông minh và tôi phải gõ {} để hoàn thành, nhưng nó phù hợp với tôi.

+0

Vì vậy, gần gũi, nhưng không hoạt động khi tôi có khung tự động đóng trên ... Tôi có thể tạo ra một chữ viết tắt khác nhau, như 'fnc' và có mở rộng đến những gì bạn có ở đó, như là một giải pháp stop-gap. Nếu không có ai đưa ra một giải pháp tốt hơn, tôi sẽ đi với điều đó. – hayavuk

0

Bạn đã cố gắng lập bản đồ toàn bộ chức năng, chẳng hạn như

inoremap ,4 function() {}<left><enter><esc>O

6

tôi sử dụng bản đồ này kết hợp với Tự động đóng:

inoremap {<CR> {<CR>}<C-o>O 

Không cần kết hợp khóa đặc biệt.

+0

Vâng, tôi đã phát hiện ra rằng bạn thực sự có thể ánh xạ tổ hợp phím như thế một vài tháng sau khi đăng câu hỏi. – hayavuk

+0

Điều này cuối cùng đã làm cho tôi, và tôi cũng sử dụng nó với vim-autoclose. – dmonopoly

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