* ну в Emacs вроде тоже можно :-) вот
Итак, простая идея:
1. пишем все заметки в простой текстовый файл;
2. структуру/иерархию заметок указываем с помощью заголовков разного уровня; для определённости, помечаем заголовки как в Markdown (
# заголовок
, ## подзаголовок
, ### подподзаголовок
, и т.д.);3. используем режим свёртки в редакторе, чтобы имитировать режим структуры, т.е. сворачиваем каждый раздел и подраздел, показывая только его заголовок.
Нетривиален только пункт 3. В Vim для этого можно создать файл
~/.vim/syntax/mkdfold.vim
примерно такого содержания:" Markdown section regions to be foldedОн определяет диапазоны подразделов, которые будут «сворачиваться». В этом примере от заголовка до заголовка того же или более высокого уровня.
syn region mkdSec1 start=/^\s*#[^#].*/ end=/^\s*#[^#].*/me=s-1 fold
syn region mkdSec2 start=/^\s*##[^#].*/ end=/^\s*#\{1,2\}[^#].*/me=s-1 fold containedin=mkdSec1
syn region mkdSec3 start=/^\s*###[^#].*/ end=/^\s*#\{1,3\}[^#].*/me=s-1 fold containedin=mkdSec1,mkdSec2
Теперь пишем простой текстовый файл в котором первой строкой ставим
modeline
, примерно такого содержания:vim: set ft=mkdfold foldmethod=syntax ai si ts=3 sw=3 :
И пишем дальше в нём свои заметки:
# ЗаметкиПереоткрываем файл, и всё, пользуемся обычными командами свёртки, чтобы скрыть лишнее.
## Способы организовать иерархические заметки
* fold mode как органайзер (Vim)
* outline mode (куча редакторов)
* спецредакторы (см. virens)
## Как организовать синтаксические свёртки в Vim
* файл с синтаксисом, определяющий начало и конец разделов и их вложенность
* modeline в редактируемом файле, которая включит этот синтаксис и свёртки
zM
— свернуть всё. zR
— развернуть всё. zj
и zk
— следующая и предыдущая свёртка соответственно. za
— свернуть/развернуть свёртку под курсором. Ну и много других (:help fold-commands
).Выглядит это примерно так:
+-- 10 строк: # Дела------------------------------------------------------------
# Заметки
+--- 4 строк: ## Способы организовать иерархические заметки--------------------
+--- 3 строк: ## Как организовать синтаксические свёртки в Vim-----------------
Плюсы такого подхода: 1) используется обычный редактор (ничего ставить и ни к чему привыкать не надо), 2) используется plain-text (при желании, заметки можно открыть в любом другом редакторе). Минусы: 1) ну не все используют Vim и не всем нравятся его свёртки, 2) возможно, специализированные средства более удобны.
Я ещё подумал, и идея мне эта ещё больше понравилась. Можно приспособить для ведения списков дел. Надо только добавить подсветку важных дел (восклицательный знак на конце) и сделанных/отложенных/отменённых.
А вообще, всякую мелочь и ерунду я записываю в TiddlyWiki. Уже давно, и очень доволен. Мне это удобнее, чем организовывать заметки иерархически.
Дополнение: как выяснилось, такой подход можно значительно развить, смотрим цикл заметок тов.
tengu-crow
про ведение «блога» в текстовом файле (с помощью Vim!) и связанный с ним цикл заметок тов. olly cat
про использование свёрток в Vim для ведения файла заметок. Спасибо за ссылки!Есть ещё специализированный плагин VimOutliner, но это уже более глубокое развитие идеи. Я хотел показать, что минимальный функционал для ведения записок есть и в штатной конфигурации.