Vraag Hoe een sjabloon in VIM te gebruiken


Dit is echt een newbie vraag - maar eigenlijk, hoe schakel ik een sjabloon in voor bepaalde bestandstypes.

Kortom, ik wil gewoon dat de sjabloon een kop van sorteringen invoegt, dat wil zeggen met enkele functies die ik nuttig vind, en bibliotheken geladen etc.

Ik interpreteer

:help templates

de manier waarop ik dit in mijn vimr zou plaatsen

au BufNewFile,BufRead ~/.vim/skeleton.R

Het uitvoeren van een R-script laat zien dat er iets kan gebeuren, maar blijkbaar niet:

--- Auto-Commands ---

Dit kan zijn omdat een sjabloon uit commando's bestaat (en dat bestaat niet in skelet.R) - en in dit geval wil ik alleen dat het een tekstkop invoegt (waarin skelton.R bestaat).

Sorry als deze vraag stom stom is; - /


19
2017-09-24 08:18


oorsprong


antwoorden:


Het commando dat je hebt voorgesteld gaat niet werken: wat dit zal doen is geen Vim-commando uitvoeren wanneer je opent ~/.vim/skeleton.R

Een ruwe manier om te bereiken wat u wilt, is het gebruik van:

:au BufNewFile *.R r ~/.vim/skeleton.R

Dit zal lezen (:r) uw bestand wanneer een nieuw *.R bestand is aangemaakt. U wilt voorkomen dat BufRead in de autocmd, of het zal het skeletbestand in uw werkbestand lezen elke keer dat u het bestand opent!

Er zijn veel plug-ins die veel meer controle toevoegen aan dit proces. Als de auteur en daarom volledig bevooroordeeld, zou ik aanbevelen deze, maar er zijn genoeg anderen vermeld hier.


Schaamteloze plug:

Ze werken allemaal op een relatief vergelijkbare manier, maar om mijn script uit te leggen:

U installeert de plug-in zoals beschreven op de gekoppelde pagina en maak vervolgens een aantal sjablonen in ~/.vim/templates. Deze sjablonen moeten dezelfde extensie hebben als het 'doelbestand', dus als het een sjabloon is voor .R bestanden, noem het zoiets als skeleton.R. In uw .vimrc, voeg zoiets toe:

let g:file_template_default = {}
let g:file_template_default['R'] = 'skeleton'

Maak vervolgens je nieuwe aan .R bestand (met een bestandsnaam, dus sla het op als het nieuw is) en voer in:

:LoadFileTemplate

U kunt ook het .vimrc bewerken en gewoon doen:

:LoadFileTemplate skeleton

Zien de website voor meer details.


26
2017-09-24 08:55



Stel dat je skeletten zich in je ~ / .vim / templates / map bevinden, kun je dit plaatsen snippet in uw vimrc-bestand.

augroup templates
  au!
  " read in templates files
  autocmd BufNewFile *.* silent! execute '0r ~/vim/templates/skeleton.'.expand("<afile>:e")
augroup END

Enige uitleg,

  • BufNewFile .  = elke keer dat we een nieuw bestand bewerken
  • stil! execute = voer stil uit, geen foutmeldingen indien mislukt
  • 0r = lees bestand en voeg inhoud bovenaan (0) in het nieuwe bestand in
  • expand (": e") = krijg een extensie van de huidige bestandsnaam

zie ook http://vim.wikia.com/wiki/Use_eval_to_create_dynamic_templates


9
2017-08-26 13:09



Maak een templates submap in uw ~/.vim map

$ mkdir -p ~/.vim/templates

Maak een nieuw bestand in de submap genaamd R.skeleton en zet in de header en / of andere dingen die je automagisch wilt laden bij het maken van een nieuwe ".R " het dossier.

$ vim ~/.vim/templates/R.skeleton

Voeg vervolgens het volgende toe aan uw ~/.vimrc bestand, welke mei zijn op een bepaalde manier voorgesteld door "gast"

autocmd BufNewFile * silent! 0r $HOME/.vim/templates/%:e.skeleton

Kijk even naar mijn github-repository voor meer details en andere opties.


5
2017-08-02 13:53



Het is gewoon een truc die ik vroeger gebruikte. Het is goedkoop, maar als je niets weet over VIM en zijn commando's is het eenvoudig te gebruiken. maak een map zoals deze:

~/.vim/templates/barney.cpp

en aangezien je konw barney.cpp je sjablooncode zou moeten zijn. voeg vervolgens een functie zoals toe ForUncleBarney() naar het einde van uw .vimrc-bestand in ~/.vimrc het zou moeten zijn

function ForBarneyStinson()
   :read ~/.vim/templates/barney.cpp
endfunction

gebruik dan gewoon deze opdracht in vim

:call ForBarneyStinson()

dan zie je je sjabloon als voorbeeld heb ik al twee sjablonen voor .cpp-bestanden

:call ForBarney()
:call ACM()

sorry zei te veel, Coderen is geweldig! :)


2
2017-12-10 02:44



Kijk ook eens naar https://github.com/aperezdc/vim-template.git.

Ik gebruik het en heb er enkele patches aan toegevoegd en zou beweren dat het relatief volwaardig is.


2
2018-02-28 22:48



Hoe zit het met het gebruik van de snipmate-plug-in? Zien hier


1
2017-09-24 14:36



Er zijn er veel uitbreidingen van template-bestanden - je vindt er ook uitleg over het implementeren van een rudimentaire template-file expander.

Van mijn kant onderhoud ik de vork van muTemplate. Voor een eenvoudige start, gewoon een {ft}.template bestand in {rtp}/template/. Als je een (viml) variabele of uitdrukking wilt gebruiken, doe het dan gewoon. Je kunt zelfs vim-code (en nu zelfs functies) in het sjabloonbestand plaatsen als je dat wilt. Verschillende slimme beslissingen zijn al geïmplementeerd voor C ++ en vim-bestanden.


1
2017-09-24 09:42