Argomento della riga di comando di Vim non in esecuzione


1

Sto cercando un programma di calendario da riga di comando per Linux già da un po 'di tempo. Ho capito che avrei dovuto usare solo vim. Voglio essere in grado di visualizzare facilmente una settimana di liste di cose da fare. Attualmente utilizzando questo comando:

data=$(unset split; echo -n "-c \""; for i in {6..0}; do if [ $i -ne 6 ] ; then split="vsplit"; else split="e"; fi; echo -n "$split $(date +"%F" -d"last sunday+$i day").txt|"; done; echo "\"") && precmd='-c "split todo.txt" -c "Calendar" -c "wincmd w"' && cmd="vim $precmd $data" && eval $cmd

Esegui questo in un terminale a schermo intero, altrimenti avrai un brutto momento. Richiede questo plug-in del calendario: https://github.com/mattn/calendar-vim Se non si dispone del plug-in del calendario di vim, funzionerà anche questo ma non avrà il calendario:

data=$(unset split; echo -n "-c \""; for i in {6..0}; do if [ $i -ne 6 ] ; then split="vsplit"; else split="e"; fi; echo -n "$split $(date +"%F" -d"last sunday+$i day").txt|"; done; echo "\"") && precmd='-c "split todo.txt"' && cmd="vim $precmd $data" && eval $cmd

Questo fa esattamente quello che voglio, tranne per il fatto che il riquadro inferiore non carica il mio todo.txt a rotazione. Se solo potessi ottenere quel riquadro inferiore per caricare il mio todo.txt, sarei pronto! Non riesco a capire perché Vim non accetterà il mio:

-c "split todo.txt"

Sentiti libero di correggere anche il mio orrendo bash.

Inoltre, mi rendo conto che il plug-in del calendario di VIM ha una funzione "diario", ma AFAIK non divide la finestra come richiesto.

Grazie!

Modifica: ecco una versione aggiornata che risolve un problema quando viene eseguita la domenica e consente anche di specificare l'offset della settimana, ad esempio "vimcal 0" "vimcal 1" "vimcal -1" ecc. (Naturalmente è necessario creare uno script e / o alias)

data=$(unset split; unset day; echo -n "-c \""; for i in {6..0}; do if [ $i -ne 6 ] ; then split="vsplit"; else split="split"; fi; if [ `date +"%A"` = "Sunday" ] ; then day="sunday"; else day="last sunday"; fi; echo -n "$split $(date +"%F" -d"$day+$i day+$1 week").txt|"; done; echo "\"") && precmd='-c "edit todo.txt" -c "Calendar" -c "wincmd w"' && cd ~/Documents/todo && cmd="vim $precmd $data" && eval $cmd

Risposte:


2

Vim fa eseguire l' :split todo.txt; vedrai il file (nascosto) nell'output di :ls!. Il problema diventa evidente quando si stampa la riga di comando eseguita (sostituendo evalcon echo):

vim -c "split todo.txt" -c "e 2013-10-05.txt|vsplit 2013-10-04.txt|vsplit 2013-10-03.txt|vsplit 2013-10-02.txt|vsplit 2013-10-01.txt|vsplit 2013-09-30.txt|vsplit 2013-09-29.txt|"

Dal buffer vuoto predefinito, :splitdisattivare il file todo.txt e quindi, nella stessa finestra, :editil primo file datato. Devi scambiare i due comandi di apertura, in questo modo:

data=$(unset split; echo -n "-c \""; for i in {6..0}; do if [ $i -ne 6 ] ; then split="vsplit"; else split="split"; fi; echo -n "$split $(date +"%F" -d"last sunday+$i day").txt|"; done; echo "\"") && precmd='-c "edit todo.txt"' && cmd="vim $precmd $data" && eval $cmd

Eccezionale! : D Funziona perfettamente, grazie per il tuo aiuto!
pantaloni gatto
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.