1

Я уже давно ищу программу-календарь для командной строки для Linux. Я понял, что я должен просто использовать Vim. Я хочу иметь возможность легко просматривать неделю списков дел. В настоящее время с помощью этой команды:

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

Запустите это в полноэкранном терминале, иначе у вас будет плохое время. Требуется этот плагин календаря: https://github.com/mattn/calendar-vim Если у вас нет плагина vim calendar, он тоже будет работать, но у него не будет календаря:

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

Это именно то, что я хочу, за исключением того, что нижняя панель не загружает мой todo.txt. Если бы я мог просто заставить эту нижнюю панель загрузить мой todo.txt, я был бы готов! Я не могу понять, почему Vim не примет мой:

-c "split todo.txt"

Не стесняйтесь исправлять мой ужасный удар.

Кроме того, я понимаю, что плагин календаря vim имеет функцию "дневник", но AFAIK он не разделяет окно, как мне требуется.

Спасибо!

Редактировать: вот обновленная версия, которая исправляет проблему при запуске по воскресеньям, а также позволяет указать смещение недели, т.е. "vimcal 0" "vimcal 1" "vimcal -1" и т.д.Конечно, вам нужно будет создать скрипт и / или псевдоним)

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

1 ответ1

2

Вим делает :split todo.txt вы увидите (скрытый) файл в выводе :ls! , Проблема становится очевидной, когда вы печатаете выполненную командную строку (заменяя eval на 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|"

Из пустого буфера по умолчанию вы :split отщепляете файл todo.txt, а затем в том же окне :edit первый датированный файл. Вам нужно поменять местами две команды открытия, например так:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .