DEV Community

loading...
Cover image for Todolist no vim

Todolist no vim

nenitf profile image Neni Updated on ・3 min read

Estava sentindo falta de controlar minhas tarefas/projetos pelo vim, e pensei em algumas maneiras de resolver isso, segue abaixo requisitos, abordagens e o resultado final.

Requisitos

1) Facilidade

Seja ao abrir o editor ou durante um projeto, gostaria de ver, anotar e concluir tarefas e voltar ao que estava fazendo antes. Essa barreira que define a vida útil desse método de todolist, pois uma ferramenta que eu precise reaprender a todo momento como usar ou muito cansativa tende a tirar seu incentivo.

2) Liberdade

Quero poder adicionar tarefas que não sei quando vou fazer e, de alguma forma, extrair somente as que sei que tenho que fazer (priorização).

3) Contextualização

Faz sentido agrupar tarefas caso seja necessário para facilitar a leitura do histórico, observações e pré-visualização das próximas ações. Pensando em uma viagem por exemplo, faz mais sentido criar todas as tarefas que tem a ver com a mesma juntas do que separadas.

4) Categorização

É uma facilidade adicionar ao projeto ou tarefa uma categoria, por exemplo se tem haver com leituras, desenvolvimento, estudo, trabalho, saúde, financeiro e etc.

5) Status

Uma tarefa pode ter 1 de 4 status:

  1. TODO: aguardando para ser feita
  2. DOING: em andamento
  3. WAIT: esperando retorno de outra pessoa
  4. DONE: finalizada

Abordagens

Getting Things Done

Gtd cobre todos os aspectos de "metodologia" porém adiciona muita complexidade desnecessária para mim.

Status por arquivo

Eu poderia salvar cada tarefa com status em um arquivo, sendo um TODO, DOING, WAIT e DONE. Porém:

  • O que acontece com projetos? Um projeto deve ser inteiramente concluído para sair do DOING para o DONE? Volto para TODO caso não tenha a intenção de finalizá-lo?
  • Atalhos no teclado ou comandos passam a ficar complexos

Lista dinâmica

Esse foi o método escolhido. Consiste em ter somente dois arquivos: BACKLOG e DONE e a lista de tarefas é gerada dinamicamente. Fluxo:

como vai ser

                         +----+
                 +------>|DONE|
                 |       +----+
+-------+     +--+-+       ^
|BACKLOG+---->|TODO|       |   
+-------+     +--+-+       |
                 |       +-+--+
                 +------>|WAIT|
                         +----+

é semelhante a

                       +----+
               +------>|DONE|
               |       +----+
+----+     +---+-+       ^
|TODO+---->|DOING|       |   
+----+     +---+-+       |
               |       +-+--+
               +------>|WAIT|
                       +----+
Enter fullscreen mode Exit fullscreen mode
  • Primeiramente: quando eu penso em todolist penso em uma lista de tarefas que sei que devo fazer o quanto antes, e não em ideias de projetos para fazer em algum momento.
  • Segundo: DOING nessa perspectiva não faz muito sentido, ele serve para saber minhas tarefas em andamento (o que sei de cabeça) ou para informar outra pessoa - não é o que pretendo aqui.

Implementação

demonstração

Possuir arquivos BACKLOG e DONE e acessar facilmente os mesmos


demonstração

Gerar a lista TODO a partir do texto TODO ou WAIT inserido em linhas do arquivo com :lvimgrep


demonstração

Remover da todolist apagando TODO ou WAIT


demonstração

Visualizar todolist com :lli e selecionar se for preciso com :ll <numero>


demonstração

Concluir itens de escopo com checkbox e conceal


demonstração

Concluir tarefas e projetos com atalho do teclado

Código

Discussion (2)

pic
Editor guide
Collapse
christianmlima profile image
christianmlima

Nice, faz uma versão em inglês!

Collapse
nenitf profile image
Neni Author

Hmmm n tinha pensado nisso, mt boa ideia