Vimwiki é um plugin para facilitar criação e edição de arquivos, tentando diminuir ao máximo o atrito entre navegar, criar e atualizar documentos de tarefas. Ele é utilizavel para criação de wikis pessoais ou diário (que não deixa de ser uma wiki). Utilizo-o diariamente no trabalho em uma wiki separada da seguinte maneira:
- Inicio o dia abrindo meu diário do dia anterior
leader-w-leader-y
e falo sobre na daily. A teclaleader
é definição pessoal, utilizo espaço - Faço um split
:split
e crio o documento do dia atualleader-w-leader-w
- Movo os itens não concluidos ontem para hoje e/ou adiciono tarefas novas
- Mantenho um padrão de escrita que não conflite sobre uma tarefa feita ou não, exemplos:
- Para uma tarefa realizada eu não escrevo
fiz pr do ticket X
, mas simpr do ticket X
- para uma tarefa que irei realizar não escrevo
vou fazer o pr do ticket X
e muito menosfazer o pr do ticket X
. Utilizo a mesma estrutura anterior:pr do ticket X
- Para uma tarefa realizada eu não escrevo
- Os itens são listas
- [ ]
, cujo podem ser marcados ou desmarcados comctrl-space
- Ao final dia faço um resumo em
retro.wiki
Tarefas complexas
Quando o ticket é longo ou faço questão de documentá-lo, crio um um arquivo com nome de seu id dentro do diário. Assim centralizo informaçoes e tarefas do ticket mas separo o que pretendo fazer hoje.
- [X] criação do ambiente [[XXXXXXXXX]]
- [ ] investigação do erro de envio de email [[YYYYYYYYY]]
- [ ] documentação do endpoint abcdefg [[ZZZZZZZZZ]]
[[arquivo]]
é a representação de um link para umarquivo.wiki
. Basta apertar enter tanto para criá-lo quanto acessá-lo.
Retro e brag document
Ao final do dia confirmo o que foi feito e no arquivo que registro as retros faço um relato sobre como foi o dia: dificuldades, conquistas e sentimento geral do dia. Normalmente crio um arquivo por sprint.
💚 MUITO BOM
🔵 OK
⚠️ ESTRANHO, SITUAÇÃO PODE FICAR PIORAR
🔴 RUIM
❌ NÃO FIZ
| data | ❓ | relato | sprint |
|----------------|----|---------------------------------------------------------------------|--------|
| [[2023-07-31]] | 🔵 | Desenvolvimento dos tickets com a orientação adequada | 2 |
| [[2023-07-28]] | ⚠️ | Muitos alinhamentos sobre os tickets, não consegui iniciar nenhum | 2 |
| [[2023-07-27]] | 🔵 | Reuniões de inicio de sprint, planning ok | 2 |
| [[2023-07-26]] | ❌ | | 1 |
| [[2023-07-25]] | 💚 | Finalizei as demandas, documentações pendentes e revisei todos PRs | 1 |
| [[2023-07-24]] | 🔵 | Obtive a orientação adequada e estou motivado a finalizar a demanda | 1 |
| [[2023-07-21]] | 🔴 | Não consegui suprir nenhuma das demandas | 1 |
Vimwiki tem um comando para criar tabelas de maneira dinamica (
:VimwikiTable
) e juntamente comtab
mantém corretamente os espaçamentos
Deixo o arquivo
retro_1.wiki
dentro da pasta de diário para ter um link com as datas ([[2023-07-21]]
)
A ideia do registro é atacar 2 frentes: facilitar na retro e sprint review; montar um brag document
Benefícios
- Daily direto ao ponto
- Organização pessoal com multiplas sub tarefas
- Orientação do dia com senso de progresso
Dicas
Navegação
tab
eshift-tab
pula entre linksenter
acessa arquivo do link ou cria-o se necessáriobackspace
retorna para o arquivo anterior antes do pulo do link- Utilize folds para facilitar a leitura:
zM
fecha todoszR
abre todoszj
ezk
navega entre folds
Utilitários
leader-w-c
no modoVisual
permite colorirglx
anula um checkboxglr
em uma lista ordenada, atualiza os numeros:VimwikiRebuildTags
e:VimwikiGenerateTagLinks TODO STARTED XXX<CR>
listará as tags:TODO:
:STARTED:
etc no arquivo:ts TODO
lista referencias da tag:TODO:
:VWS :TODO:
também pesquisa na quickfix list:VWB
gera backlinks, listando todos arquivos que referenciam o buffer abertoVgq
adequa a seleção de linhas de acordo comtextwidth
, removendo ou criando
Minhas configurações (em Lua)
local function wiki(opts)
return vim.tbl_deep_extend('force', {
syntax = 'default',
ext = 'wiki',
index = 'index',
auto_diary_index = 1,
auto_tags = 1, -- muito bugado, linkando paginas em branco
auto_generate_tags = 1,
exclude_files = { 'index.wiki', '_diary/*', 'diary/*', 'old/**', 'priv/**' },
}, opts)
end
vim.g.vimwiki_list = {
wiki {
name = 'pkm',
diary_rel_path = "_diary",
path = '~/vimwiki/pkm',
auto_generate_links = 1,
generated_links_caption = 1,
rx_todo = [[\C\%(\<TODO\>\|\<DONE\>\|\<THANKS\>\|\<FIXME\>\|\<CUIDADO\>\|????\|!!!!\)]],
},
wiki {
name = 'wtf',
path = '~/dev/blog/wtf',
rx_todo = [[\C\%(\<TODO\>\|\<DONE\>\|\<THANKS\>\|\<FIXME\>\|\<CUIDADO\>\|????\|!!!!\)]],
index = 'README',
ext = '.md',
syntax = 'markdown',
},
wiki {
name = 'trampo',
path = '~/vimwiki/trampo',
rx_todo = [[\C\%(\<COP\>\|\<CALL\>\|\<TODO\>\|\<BACKLOG\>\|\<RELEASE\>\|\<DONE\>\|\<FLAKY\>\|\<STARTED\>\|\<FIXME\>\|\<FIXED\>\|\<MERGE\>\|\<MY REVIEW\>\|\<PRFIX\>\|\<WAIT QA\>\|\<WAIT\>\|\<BUG\>\|\<NEW\>\|\<REVIEW\>\|\<PR\>\|\<QA\>\|\<P:\>\|\<R:\>\|???\)]],
},
wiki {
name = 'sideproject',
path = '~/vimwiki/sideproject',
rx_todo = [[\C\<\%(TODO\|DONE\|STARTED\|FIXME\|FIXED\|WAIT\)\>]],
},
}
vim.g.vimwiki_folding = 'expr'
vim.g.vimwiki_auto_chdir = 1
vim.g.vimwiki_links_header = "Links"
vim.g.vimwiki_tags_header = "Tags"
vim.g.vimwiki_markdown_link_ext = 1
FAQ
- O plugin tem suporte a
.md
, por que usar.wiki
? R: Pela facilidade de navegação de[[]]
, export para html existente com:VimwikiAll2HTML
e backlinks com:VWB
- Quais outros usos do vimwiki além de trabalho? Wiki pessoal (substituindo Notion), wiki de livros lidos (substituindo blogs)