Làm cách nào để thêm văn bản bộ xương vào tập tin vim mới?


9

Tôi sử dụng Vim để viết C ++ và tôi có khá nhiều #include<>tuyên bố, bình luận, v.v. mà tôi phải đưa vào mỗi tệp mới tôi tạo. Tôi đã thêm

autocmd BufNewFile *.cpp r C:\(full file path of skeleton text file) 

với vimrc của tôi, bởi vì tôi nghe thấy điều này tạo ra một bộ đệm với văn bản tôi cần trong đó. Làm cách nào để thêm văn bản này vào một tệp mới? Có một cách dễ dàng để làm điều này từ bộ đệm, hoặc có một cách dễ dàng khác để làm điều này? Tôi cũng đã nghe nói một chút về các plugin mẫu. Có một cái rất đơn giản có thể làm điều này cho tôi?


1
Bạn đã thử chỉnh sửa một tệp C ++ mới sau khi thêm tệp này autocmdvà tạo tệp khung xương chưa?
muru

1
Tôi đã thử tạo một tệp mới với phần mở rộng tệp .cpp và chỉnh sửa nó bằng Vim. Khi mở nó để chỉnh sửa, nó vẫn còn trống, tôi cần phải làm gì nữa?
Electriccello

2
Không, bạn sẽ thấy nội dung của tệp bộ xương đã được bao gồm. Nếu bạn tự chạy :r C:\(full file path of skeleton text file)thì sao? Bạn có nhận được bất kỳ lỗi?
muru

3
@ Electricalcello Ah, :enewsẽ không hoạt động, nhưng :e newfile.cppsẽ hoạt động nếu newfile.cppchưa tồn tại (ngay cả khi trống).
muru

5
Lý do :enewkhông hoạt động là vì bạn đang chỉnh sửa bộ đệm mới, chưa được đặt tên và sau đó lưu nó dưới dạng tệp .cpp. BufNewFilechỉ kích hoạt nếu bạn đang chỉnh sửa một tệp mới với tên tệp đích.
fruglemonkey

Câu trả lời:


6

Văn bản bộ xương từ một tệp hiện có có thể được thêm vào một tệp mới bằng cách chèn dòng

autocmd BufNewFile *.cpp r C:\(full file path of skeleton text file)

vào vimrc. Sự BufNewFilekiện không hoạt động nếu tệp mới được tạo theo hai bước :enewsau đó sử dụng :sav filename. Thay vào đó, việc tạo một tệp mới bằng cách :e filenamekích hoạt BufNewFiletự động của sự kiện trong vimrc, thêm nội dung của tệp văn bản bộ xương vào tệp mới được tạo.


1
Cũng thấy :help template.
Martin Tournoij

Để ngăn chặn tôi .vimrckhỏi tắc nghẽn, có bất kỳ vị trí nào khác trong ~/.vim/hệ thống phân cấp mà tôi có thể đặt nó vào không?
Santosh Kumar

Điều này cũng thêm một dòng trống bổ sung trên đầu trong tệp mới.
Santosh Kumar

5

Thật vậy, các plugin mở rộng mẫu sẽ giúp bạn trong nhiệm vụ này. :readlà bước 0 của plugin mở rộng mẫu.

Chẳng hạn, mu-template sẽ cố gắng đưa foo.h từ foo.cpp nếu foo.h được phát hiện. Nó cũng sẽ cho phép mở rộng các tiêu đề có dữ liệu động trong đó (ngày, tác giả, giấy phép / bản quyền, v.v.).


1

Để thiết lập bộ xương mặc định cho tất cả các kiểu tệp và tùy chỉnh nó cho dự án cụ thể:

function! s:load_skeleton(type)
  " do nothing if no filetype
  if empty(a:type) | return | endif

  " glob every directory of rtp to search for skeleton/filetype
  let skeletons = globpath(&rtp, 'skeleton/' . a:type, 0, 1)
  if empty(skeletons) | return | endif

  " read last skeleton into 1st line.
  exe '0read ' . skeletons[-1]
endfunction

augroup aug_skeleton
  au!

  " BufNewFile event is trigged when you edit a new file.
  autocmd BufNewFile * call s:load_skeleton(&filetype)
augroup end

Đặt bộ xương mặc định dưới ~/.vim/skeleton, ví dụ như: ~/.vim/skeleton/vim, ~/.vim/skeleton/sh.

Đặt dự án bộ xương cụ thể theo balabala/project/.vim/skeleton. Miễn là ~/.vimxuất hiện trước balabala/project/.vimtrong :h rtp, balabala/project/skeleton/sẽ được sử dụng như thư mục bộ xương.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.