2010-11-21 69 views
6

Gần đây tôi đã chuyển từ Eclipse sang Vim. Tôi yêu nó. Có một vài sự cố mà tôi đang thực hiện, nhưng một trong những vấn đề mà tôi gặp phải rất nhiều rắc rối là các nhận xét về tài liệu PHP. Trong nhật thực tôi có thể gõ:Vim: Cách thay đổi văn bản từ bên trong tập lệnh thụt lề

/** [enter] 

và dòng tiếp theo sẽ tự động điền vào với

* 

Vì vậy, tôi muốn có:

/** 
* [comment goes here] 

Tôi đang tự hỏi nếu có bất cứ điều gì như thế này cho vim. Dường như có một số plugin để tự động tạo nhận xét tài liệu bằng cách chạy lệnh, nhưng tôi rất muốn có nó khi tôi đang nhập.

Tôi đang chơi với tập lệnh thụt lề PHP (http://www.vim.org/scripts/script.php?script_id=1120) và tôi nhận ra khi nó ở trong khối nhận xét tài liệu, nhưng tôi không thể tìm ra cách để thực sự thay đổi văn bản và thêm "*" sau khi nhấn enter khi bên trong khối.

Tôi đã thử những gì tôi đã nhìn thấy các plugin khác làm:

let @z = ' * ' 
put! z 

cố gắng này quá:

exe 'normal!' '"zgp' 

nhưng không có may mắn. Đây có phải là không thể từ một kịch bản indent, và nếu không, làm thế nào để tôi thực sự có được Vim để nhận ra một khối bình luận doc và hành động cho phù hợp trong khi tôi đang gõ?

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

Trả lời

2

Không cần phải gây rối xung quanh với các tệp thụt đầu dòng. Vim của formatoptions sẽ làm điều này cho bạn và trong một loạt các ngôn ngữ (không chỉ PHP).

Đảm bảo bạn đã r trong formatoptions của bạn:

:setlocal fo+=r "to set 
:set fo? "to query 

Bạn có thể bao gồm này trong thư mục .vimrc hoặc trong .vim/ftplugin/php.vim (nếu bạn chỉ muốn kích hoạt này cho PHP).

Để biết thêm thông tin về formatoptions và tập tin kiểu plugin, xem:

+1

Đây là cách đi đúng đắn. Như một bản tóm tắt nhanh về một câu trả lời rất toàn diện, tôi muốn nói thêm 'set fo + = r' vào .vimrc. –

+1

Cảm ơn vì điều này ... dường như làm việc tuyệt vời – andrew

+0

Lạ lùng, điều này hoạt động khi tôi có tất cả các plugin bị vô hiệu hóa và tôi đặt fo + = r, nhưng khi sử dụng mã chứng khoán PHP indent script (không có sửa đổi) và tôi đặt fo + = r, nó không 't làm việc. đặt cho? == "qrowcb" ... bất kỳ ý tưởng nào? Có một cài đặt nào khác có thể vô hiệu hóa điều này không? – andrew

1

Việc thêm mã bên dưới vào vimrc của bạn có làm điều gì đó tương tự với những gì bạn muốn không?

autocmd BufNewFile,BufRead *.php setlocal formatoptions+=r formatoptions+=o 
autocmd BufNewFile,BufRead *.php setlocal comments=s1:/*,mb:*,ex:*/,://,:# 

Tôi hiện không thể tìm ra cách làm cho nó hoạt động mà không ghi đè nhận xét <!-- --->, điều này thực hiện. I E. điều này sẽ phá vỡ tự động thụt lề với <!-- --> nhận xét.

Chỉnh sửa. Đã thêm ://,:# vào số comments làm phân phối của Johnsyweb.

+0

'comments' nên được thiết lập tự động bằng cách cung cấp các 'php. kịch bản thụt lề của vim'. '' chú thích là một phần của cú pháp HTML. – Johnsyweb

+0

@Johnsyweb Có, nhưng đoạn mã trên sẽ ghi đè bằng cách thực hiện 'comments = ...'. Nếu tôi thay vì 'comments + = ...', các chú thích/* */style không hoạt động đúng --- tôi không chắc tại sao. – dennycrane

+0

Làm việc cho tôi out-of-the-box: 'comments = s1:/*, mb: *, ví dụ: * /,: //,: #' – Johnsyweb

0

Hãy thử thêm này để vimrc của bạn:

let g:PHP_autoformatcomment=1 

Tôi đang trên một máy Mac và có vẻ như để được kích hoạt theo mặc định. Chức năng chính xác như cách bạn đã nêu.

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