Bagaimana cara menambahkan teks kerangka ke file vim baru?

9

Saya menggunakan Vim untuk menulis C ++, dan saya punya beberapa #include<>pernyataan, komentar, dll yang harus saya sertakan dalam setiap file baru yang saya buat. aku sudah menambahkan

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

ke vimrc saya, karena saya mendengar ini membuat buffer dengan teks yang saya butuhkan di dalamnya. Bagaimana cara saya menambahkan teks ini ke file baru? Apakah ada cara mudah untuk melakukan ini dari buffer, atau ada cara lain yang mudah untuk melakukan ini? Saya juga pernah mendengar sedikit tentang plugin templat. Apakah ada yang sangat sederhana yang bisa melakukan ini untuk saya?

electriccello
sumber
1
Apakah Anda mencoba mengedit file C ++ baru setelah menambahkan ini autocmd, dan membuat file kerangka?
muru
1
Saya mencoba membuat file baru dengan ekstensi file .cpp dan mengeditnya dengan Vim. Setelah membukanya untuk diedit, masih kosong apakah ada langkah lain yang perlu saya lakukan?
electriccello
2
Tidak, Anda seharusnya sudah melihat isi file kerangka sudah termasuk. Bagaimana jika Anda menjalankannya secara manual :r C:\(full file path of skeleton text file)? Apakah Anda mendapatkan kesalahan?
muru
3
@electriccello Ah, :enewtidak akan berfungsi, tetapi :e newfile.cppharus berfungsi jika newfile.cppbelum ada (meskipun kosong).
muru
5
Alasannya :enewtidak akan berhasil adalah karena Anda mengedit buffer baru yang tidak disebutkan namanya, dan kemudian menyimpannya sebagai file .cpp. BufNewFilehanya memicu jika Anda mengedit file baru dengan nama file target.
fruglemonkey

Jawaban:

6

Teks kerangka dari file yang sudah ada dapat ditambahkan ke file baru dengan memasukkan baris

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

ke dalam vimrc. The BufNewFileevent tidak bekerja jika file yang baru dibuat dalam dua langkah menggunakan :enewkemudian :sav filename. Sebagai gantinya, membuat file baru menggunakan :e filenamememicu BufNewFileautocommand acara di vimrc, menambahkan konten file teks kerangka ke file yang baru dibuat.

electriccello
sumber
1
Lihat juga :help template.
Martin Tournoij
Untuk mencegah agar saya .vimrctidak tersumbat, apakah ada lokasi lain dalam ~/.vim/hierarki yang dapat saya masukkan?
Santosh Kumar
Ini juga menambahkan baris kosong tambahan di bagian atas dalam file baru.
Santosh Kumar
5

Memang, plugin expander template akan membantu Anda dalam tugas ini. :readadalah langkah 0 dari plugins expander template.

Misalnya, mu-template akan mencoba memasukkan foo.h dari foo.cpp jika foo.h terdeteksi. Ini juga akan memungkinkan untuk memperluas tajuk dengan data dinamis di dalamnya (tanggal, penulis, lisensi / hak cipta, dll).

Luc Hermitte
sumber
1

Untuk mengatur kerangka default untuk semua tipe file dan menyesuaikannya untuk proyek tertentu:

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

Letakkan kerangka default di bawah ~/.vim/skeleton, misalnya: ~/.vim/skeleton/vim, ~/.vim/skeleton/sh.

Letakkan kerangka spesifik proyek di bawah balabala/project/.vim/skeleton. Selama ~/.vimmuncul sebelumnya balabala/project/.vimdi :h rtp, balabala/project/skeleton/akan digunakan sebagai direktori kerangka.

dedowsdi
sumber