Yeni vim dosyalarına nasıl iskelet metni ekleyebilirim?


9

C ++ yazmak için Vim kullanıyorum ve #include<>oluşturduğum her yeni dosyaya eklemem gereken birkaç deyim, yorum vb. Var. ekledim

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

benim vimrc için, çünkü bunun içinde ihtiyacım olan metin ile bir tampon oluşturduğunu duydum. Bu metni yeni bir dosyaya nasıl eklerim? Bunu arabellekten yapmanın kolay bir yolu var mı, yoksa bunu yapmanın başka bir kolay yolu var mı? Ayrıca şablon eklentileri hakkında da bir şeyler duydum. Bunu benim için yapabilecek çok basit bir tane var mı?


1
Bunu ekledikten autocmdve iskelet dosyasını oluşturduktan sonra yeni bir C ++ dosyasını düzenlemeyi denediniz mi?
muru

1
Bir .cpp dosya uzantısına sahip yeni bir dosya oluşturmayı ve Vim ile düzenlemeyi denedim. Düzenleme için açıldıktan sonra, hala boştu yapmam gereken başka bir adım var mı?
electriccello

2
Hayır, iskelet dosyasının içeriğini zaten içeride görmüş olmalısınız. Manuel olarak çalıştırırsanız ne olur :r C:\(full file path of skeleton text file)? Herhangi bir hata alıyor musunuz?
muru

3
@electriccello Ah :enewçalışmaz, ama :e newfile.cppeğer çalışması gerekir newfile.cpp(hatta boş ise) zaten mevcut değildi.
muru

5
Çalışmayan neden :enew, yeni, adsız bir arabelleği düzenlemeniz ve daha sonra bir .cpp dosyası olarak kaydetmenizdir. BufNewFileyalnızca hedef dosya adıyla yeni bir dosya düzenliyorsanız tetiklenir.
fruglemonkey

Yanıtlar:


6

Mevcut bir dosyadan alınan iskelet metni, çizgi eklenerek yeni bir dosyaya eklenebilir

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

vimrc içine. BufNewFileYeni dosya kullanılarak iki adımda oluşturulursa olay çalışmaz :enewsonra :sav filename. Bunun yerine, kullanarak yeni bir dosya oluşturmak , vimrc'deki olayın otomatik komutunu :e filenametetikler BufNewFileve iskelet metin dosyasının içeriğini yeni oluşturulan dosyaya ekler.



Sıkışıklığımı önlemek için .vimrc, ~/.vim/hiyerarşide yerleştirebileceğim başka bir yer var mı?
Santosh Kumar

Bu, yeni dosyanın üst kısmına boş bir satır daha ekler.
Santosh Kumar

5

Gerçekten de, şablon genişletici eklentileri bu görevde size yardımcı olacaktır. :readşablon genişletici eklentilerinin 0 adımıdır.

Örneğin, mu-şablonu , foo.h algılanırsa foo.cpp dosyasındaki foo.h öğesini dahil etmeye çalışır. Ayrıca, içinde dinamik veriler (tarih, yazar, lisans / telif hakkı vb.) Bulunan başlıkların genişletilmesine izin verir.


1

Tüm dosya türleri için varsayılan iskeleti ayarlamak ve onu belirli bir proje için özelleştirmek üzere:

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

Varsayılan iskeletleri altına yerleştirin ~/.vim/skeleton, örneğin: ~/.vim/skeleton/vim, ~/.vim/skeleton/sh.

Projeye özgü iskeleti altına koyun balabala/project/.vim/skeleton. Sürece ~/.vimgörünmeden önce balabala/project/.vimde :h rtp, balabala/project/skeleton/iskelet dizin olarak kullanılacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.