(Dan Bridges) (16. jan 2020)
Jeg skrev for nylig et simpelt vim-plugin, vim-markdown-runner , som supplement til mine markdown-noter baseret projekt workflow. I dette indlæg vil jeg gå ind på nogle få flere detaljer om denne arbejdsgang og vise, hvordan dens enkelhed er overraskende stærk.

Overordnet struktur
Jeg gemmer alle mine note-filer i en enkelt rodmappe i Dropbox. Dette giver mig mulighed for let at se og redigere noterne fra en mobilenhed. Denne rodmappestruktur afspejler min hjemmekatalog, som giver mig mulighed for at knytte projektfilstier til deres note-fil. For eksempel hvis jeg har et projekt i ~/projects/side-projects/my-project
er den tilknyttede note-fil placeret på ~/Dropbox/notes/projects/side-projects/my-project.md
.
Jeg opretter derefter et symlink .notefile
i den originale projektmappe, der peger på den fulde Dropbox-baserede sti. Årsagen til oprettelsen af symlinket er dobbelt: (i) for at give mulighed for hurtig visning af en fil fra projektmappen, og (ii), så når redigering af en fil forbliver vim i projektmappen, så ting som ctrlp-søgning stadig fungerer som forventet (i stedet for ved et uheld at søge i notesmappen).
Jeg tilføjede et par funktioner og en :Notes
kommando til min .vimrc
for at oprette eller åbne den tilknyttede note-fil til min nuværende arbejdsmappe.
Notes()
løfter det tunge. Hvis en .notefile
allerede er til stede, åbnes den simpelthen. Hvis der ikke er en .notefile
, kører den NotesInitNew()
, som kontrollerer, om den tilknyttede Dropbox-fil findes. Hvis filen ikke findes i Dropbox, opretter den den korrekte katalogstruktur, og opretter derefter en ny markdown-fil, der allerede er udfyldt med en titel baseret på det endelige katalognavn. Endelig oprettes .notefile
symlink og åbnes derefter.
Inde i en note-fil
Inde i en typisk note-fil har jeg sædvanlige lister over todos, tilfældige møderotater og andre rutinemæssige emner, men den sande kraft kommer fra vim-markdown-runner, som giver mig mulighed for at have interaktive legepladser, projektspecifikke scripts og en grundlæggende API-klient, der beskriver en projektrute, der erstatter Postman eller Paw .
Legepladser
Under udviklingen foretager jeg ofte fejlfinding eller verificering af et lille stykke kode, idet en simpel legeplads letter dette meget.
## Playground```go
fmt.Println(os.Getwd())
``````python
import pandas as pd
print(pd.read\_csv("data.csv"))
```
Med vim-markdown-runner kan jeg placere min markør i en af disse kodeblokke og udføre dem. Det korrekte sprog / miljø registreres automatisk, og i tilfælde af Go udføres der yderligere trin for at tilføje en main()
og køre goimports
.
Scripts
Jeg vil ofte have projektspecifikke scripts, der ikke rigtig er værd at lægge i deres egne filer. Jeg kan også køre dem med vim-markdown-runner:
## Scripts```
get\_name() {
echo "Dan"
}echo "You are $(get\_name)"
```
Hvis der ikke er angivet noget sprog i kodeblokken, kører vim-markdown-runner det med uanset hvad $SHELL
er indstillet til.
API-klient
Inden for webudviklingsprojekter har jeg en Endpoints-sektion i min notatfil som en simpel erstatning for Postbrevet og lignende. Dette er bare httpie kommandoer, men det giver mig mulighed for let at katalogisere og genkøre fælles ruter:
## Endpoints```
http localhost:3000/api/todos
``````
http POST localhost:3000/api/todos title=Stuff
```...etc
Som du kan se, er der en række kraftfulde brugssager, som vim-markdown-runner håndterer. Det er også meget konfigurerbart, så du skal være i stand til at tilpasse det til dine egne behov.