2012-05-24 39 views
5

Có phải làm cho Vim tạo ra một nhận xét blurb dựa trên loại tệp khi tôi mở một tệp mới không?Tự động tạo các chú thích tài liệu trong Vim

Tôi mới làm quen với Vim. Đây là chức năng tôi đang tìm kiếm. Khi tôi làm:

$ vim hello.py 

Tôi muốn các tập tin để bắt đầu với:

#Date Created: 24 May 2012 
#Last Modified: (This is optional, really) 
#Summary: (enter short summary of program here) 
#Author: My Name 
#License: ... 

vv Tôi đã tìm kiếm xung quanh nhưng tôi không thể tìm ra giải pháp để làm điều này.

Trả lời

4

Bạn có thể làm điều này mà không cần file xương bằng cách sử dụng sau đây:

autocmd BufNewFile *.py exe "normal O#Date Created: " . strftime("%d %b %Y") . "\r#Last Modified:\r#Summary:\r#Author:\r#License:\r" 
autocmd BufWritePre *.py exe "%s/^#Last Modified:.*$/#Last Modified: " . strftime("%d %b %Y (%T)") . "/e" 

Đặt những người trong bạn vimrc.

Một vấn đề tiềm năng là các autocmd BufWritePre sẽ nối thời gian hiện tại để tất cả dòng bắt đầu bằng:

#Last Modified: 
3

này được bao phủ trong vim autocmd giúp đỡ .. đặc biệt là bạn muốn this

1

Câu trả lời này được dựa trên của pb2q, nhưng làm cho nó có thể mở rộng hơn. Xác định một chức năng để làm việc tạo ra, vì vậy bạn có thể sử dụng nó cho một loạt các loại bình luận:

function UpdateModifiedTime(comment) 
    let savedPosition = getpos(".") 
    call cursor(1, 1) 
    let modified = a:comment . 'Modified:' 
    if search(modified, 'e') > 0 
     execute 'substitute/' . modified . '.*/' . modified . ' ' . strftime('%b %d, %Y %T') . '/' 
    endif 
    call setpos(".", savedPosition) 
endfunction 

(Lưu ý: một thói quen của tôi để sử dụng các hình thức còn bất cứ khi nào có thể có trong kịch bản Vim, trừ khi tôi golfing, vì tôi đánh giá khả năng đọc mã và lệnh bình thường là phức tạp).

Sau đó bạn có thể định nghĩa autocommands như:

autocmd BufWrite *.sh,*.ksh,*.bash  call UpdateModifiedTime('## ') 
autocmd BufWrite *.vim     call UpdateModifiedTime('" ') 
autocmd BufWrite *.py     call UpdateModifiedTime('') 
autocmd BufWrite *.c      call UpdateModifiedTime('// ') 

Lưu ý rằng tôi đã đưa ra một nhân vật bình rỗng cho Python. Đó là bởi vì tôi có các chuỗi ''' trong tiêu đề tệp của tôi để nhận xét. Bạn có thể sử dụng '# ' hoặc '## ' hoặc bất kỳ dấu tick nào ưa thích của bạn.

Bạn có thể làm điều gì đó tương tự với Created.

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