#+HTML: <div align="center">
#+HTML: <img alt="Neovim(形状)和Org-mode(颜色)标志的混合" src="https://yellow-cdn.veclightyear.com/87312a0a/a5325a67-35d3-41ce-9bcb-a601d69dd151.svg" width="250" /><br/>
- nvim-orgmode
#+HTML:<a href="/LICENSE"><img alt="许可证" src="https://img.shields.io/badge/license-MIT-brightgreen?style=flat-square"></a>
#+HTML:<a href="https://ko-fi.com/kristijanhusak"><img alt="Kofi" src="https://img.shields.io/badge/support-kofi-00b9fe?style=flat-square&logo=kofi"></a>
#+HTML:<a href="https://matrix.to/#/#neovim-orgmode:matrix.org"><img alt="聊天" src="https://img.shields.io/matrix/neovim-orgmode:matrix.org?logo=matrix&server_fqdn=matrix.org&style=flat-square"></a>
为Neovim 0.9.4+编写的Lua版Orgmode克隆
[[#setup][设置]] • [[file:./DOCS.md][文档]] • [[#showcase][展示]] • [[#treesitter-info][Treesitter]] • [[#troubleshoot][故障排除]] • [[#plugins][插件]] • [[file:./CONTRIBUTING.md][贡献]] • [[#thanks-to][致谢]]
#+HTML:</div>
** 快速开始
*** 要求
- Neovim 0.9.4或更高版本
*** 安装
使用您喜欢的包管理器:
#+HTML:<details open><summary><b><a href="https://github.com/folke/lazy.nvim">lazy.nvim</a>(推荐)</b></summary></br>
#+BEGIN_SRC lua
{
'nvim-orgmode/orgmode',
event = 'VeryLazy',
ft = { 'org' },
config = function()
-- 设置orgmode
require('orgmode').setup({
org_agenda_files = '/orgfiles//',
org_default_notes_file = '/orgfiles/refile.org',
})
-- 注意:如果您正在使用带有ensure_installed = "all"选项的nvim-treesitter
-- 请将org添加到ignore_install中
-- require('nvim-treesitter.configs').setup({
-- ensure_installed = 'all',
-- ignore_install = { 'org' },
-- })
end,
}
#+END_SRC
#+HTML:</details>
#+HTML:<details> <summary><b><a href="https://github.com/wbthomason/packer.nvim">packer.nvim</a></b></summary> </br>
#+BEGIN_SRC lua
use {'nvim-orgmode/orgmode', config = function()
require('orgmode').setup{}
end
}
#+END_SRC
#+HTML:</details>
#+HTML:<details> <summary><a href="https://github.com/junegunn/vim-plug"><b>vim-plug</b></a></summary> </br>
#+BEGIN_SRC vim
Plug 'nvim-orgmode/orgmode'
#+END_SRC
#+HTML:</details>
#+HTML:<details> <summary><a href="https://github.com/Shougo/dein.vim"><b>dein.vim</b></a></summary> </br>
#+BEGIN_SRC vim
call dein#add('nvim-orgmode/orgmode')
#+END_SRC
#+HTML:</details>
*** 设置
:PROPERTIES:
:CUSTOM_ID: setup
:END:
注意,对于[[https://github.com/folke/lazy.nvim][lazy.nvim]],不需要这个设置,
因为上面的说明已经涵盖了完整的设置
#+BEGIN_SRC lua
-- init.lua
require('orgmode').setup({
org_agenda_files = {'/Dropbox/org/', '~/my-orgs//'},
org_default_notes_file = '/Dropbox/org/refile.org',
})
-- 注意:如果您正在使用带有ensure_installed = "all"选项的nvim-treesitter
-- 请将org添加到ignore_install中
-- require('nvim-treesitter.configs').setup({
-- ensure_installed = 'all',
-- ignore_install = { 'org' },
-- })
或者如果您使用的是init.vim~,请将上述代码片段包装如下:
#+BEGIN_SRC vim
" init.vim
lua << EOF
require('orgmode').setup({
org_agenda_files = {'~/Dropbox/org/', '/my-orgs/**/*'},
org_default_notes_file = '/Dropbox/org/refile.org',
})
EOF
#+END_SRC
**** 补全
#+HTML:<details> <summary><a href="https://github.com/hrsh7th/nvim-cmp"><b>nvim-cmp</b></a></summary> </br>
#+BEGIN_SRC lua
require('cmp').setup({
sources = {
{ name = 'orgmode' }
}
})
#+END_SRC
#+HTML:</details>
#+HTML:<details> <summary><a href="https://github.com/nvim-lua/completion-nvim"><b>completion-nvim</b></a></summary> </br>
#+BEGIN_SRC lua
vim.g.completion_chain_complete_list = {
org = {
{ mode = 'omni'},
},
}
-- 添加额外的关键字字符
vim.cmd[[autocmd FileType org setlocal iskeyword+=:,#,+]]
#+END_SRC
#+HTML:</details>
或者只需通过=<C-x><C-o>=使用omnifunc~
*** 使用
- 打开日程提示:=<Leader>oa=
- 打开捕获提示:=<Leader>oc=
- 在任何orgmode缓冲区中按=g?=获取帮助
如果您是Orgmode新手,请参阅文档中的[[/DOCS.md#getting-started-with-orgmode][入门]]部分
或我们维基中的实践[[https://github.com/nvim-orgmode/orgmode/wiki/Getting-Started][教程]]。
** 展示
:PROPERTIES:
:CUSTOM_ID: showcase
:END:
*** 日程
#+CAPTION: 日程
#+NAME: agenda
[[https://user-images.githubusercontent.com/1782860/123549968-8521f600-d76b-11eb-9a93-02bad08b37ce.gif]]
*** Org文件
#+CAPTION: org文件
#+NAME: orgfile
[[https://user-images.githubusercontent.com/1782860/123549982-90752180-d76b-11eb-8828-9edf9f76af08.gif]]
*** 捕获和重新归档
#+CAPTION: 捕获
#+NAME: capture
[[https://user-images.githubusercontent.com/1782860/123549993-9a972000-d76b-11eb-814b-b348a93df08a.gif]]
*** 自动补全
#+CAPTION: 自动补全
#+NAME: autocomplete
[[https://user-images.githubusercontent.com/1782860/123550227-e8605800-d76c-11eb-96f6-c0a677d562d4.gif]]
** Treesitter信息
:PROPERTIES:
:CUSTOM_ID: treesitter-info
:END:
内置的treesitter解析器用于解析org文件。
*** 已知的高亮问题和限制
- LaTex仍通过语法文件高亮
** 故障排除
:PROPERTIES:
:CUSTOM_ID: troubleshoot
:END:
*** 缩进不起作用
确保您没有在Org缓冲区中使用[[https://github.com/nvim-treesitter/nvim-treesitter#indentation][nvim-treesitter缩进]]覆盖indentexpr
*** 打开日程/捕获提示或org文件时出现treesitter/query.lua错误
Tree-sitter解析器可能未安装。
尝试运行~:lua require('orgmode.config'):reinstall_grammar()重新安装它。
*** 日期不是英文
日期是使用Lua原生日期支持生成的,创建时会读取您当前的区域设置。
#+HTML: <br/>
要使用不同的区域设置,您可以在init.lua中添加以下内容:
#+BEGIN_SRC lua
vim.cmd('language en_US.utf8')
#+END_SRC
或在init.vim中
#+BEGIN_SRC vim
language en_US.utf8
#+END_SRC
只需确保您的系统上安装了en_US区域设置。要查看系统上可用的选项,您可以
启动命令:language并按<TAB>自动完成可能的选项。
*** 链接没有被隐藏
链接使用Vim的隐藏功能隐藏(参见:help conceal~)。要启用隐藏,请在init.lua中添加以下内容:
#+BEGIN_SRC lua
vim.opt.conceallevel = 2
vim.opt.concealcursor = 'nc'
#+END_SRC
或者如果您使用的是init.vim:
#+BEGIN_SRC vim
set conceallevel=2
set concealcursor=nc
#+END_SRC
*** 跳转到带有正斜杠的文件路径不起作用
如果您使用的是Windows,默认情况下路径使用反斜杠写入。
要使用正斜杠,您必须启用shellslash选项
(参见~:help shellslash~)。
#+BEGIN_SRC lua
vim.opt.shellslash = true
#+END_SRC
或者如果您使用的是init.vim:
#+BEGIN_SRC vim
set shellslash
#+END_SRC
更多信息请参见问题[[https://github.com/nvim-orgmode/orgmode/issues/281#issuecomment-1120200775][#281]]
** 功能
*** 简要说明
- 日程视图
- 按标签/关键字搜索
- 时间记录
- 可重复日期,日期和时间范围
- 捕获到默认笔记文件/目标
- 归档(归档文件或ARCHIVE标签)
- 导出(通过
emacs、pandoc和自定义导出选项)
- 通知(实验性,见问题[[https://github.com/nvim-orgmode/orgmode/issues/49][#49]])
- 日历弹出窗口,方便导航和更新日期
- 各种org文件映射:
- 提升/降级
- 更改TODO状态
- 更改日期
- 插入/移动/重新归档标题
- 更改标签
- 切换复选框状态
- 从日程视图远程编辑
- 通过[[https://github.com/tpope/vim-repeat][vim-repeat]]实现可重复映射
*** 详细分解
- 日程提示:
- 日程视图(=a=):
- 能够显示每日(=vd=)/每周(=vw=)/每月(=vm=)/每年(=vy=)日程
- 支持各种日期设置:
- DEADLINE:警告设置 - 示例:
<2021-06-11 Fri 11:00 -1d>
- SCHEDULED:延迟设置 - 示例:
<2021-06-11 Fri 11:00 -2d>
- 所有日期 - 重复设置:
- 累积类型:
<2021-06-11 Fri 11:00 +1w>
- 赶上类型:
<2021-06-11 Fri 11:00 ++1w>
- 重启类型:
<2021-06-11 Fri 11:00 .+1w>
- 时间范围 - 示例:
<2021-06-11 Fri 11:00-12:30>
- 日期范围 - 示例:
<2021-06-11 Fri 11:00-12:30>--<2021-06-13 Sun 22:00>
- 根据定义的日期(DEADLINE、SCHEDULED、普通日期)正确列出任务
- 向前(=f=)/向后(=b=)导航或跳转到特定日期(=J=)
- 在当前窗口(=<CR>=)或其他窗口(=<TAB>=)中转到光标下的任务
- 如果定义了":CATEGORY:"属性,则打印类别
- 列出具有"TODO"状态的任务(=t=):
- 查找匹配标签的标题(=m=):
- 搜索标题(及其内容)的查询(=s=):
- [[DOCS.md#advanced-search][高级搜索]]标签/待办关键字/属性
- 通知(实验性,见问题[[https://github.com/nvim-orgmode/orgmode/issues/49][#49]])
- 时间记录
- 捕获:
- 定义自定义模板
- 通过=<C-c>=快速捕获到默认笔记文件
- 捕获到特定目标=<Leader>or=
- 用=<Leader>ok=中止捕获
- Org文件
- 时间记录
- 重新归档到目标/标题:=<Leader>or=
- 增加/减少光标下的日期:=<C-a>= / =<C-x>=
- 通过日历弹出窗口更改光标下的日期:=cid=
- 更改标题TODO状态:向前=cit=或向后=ciT=
- 打开光标下的超链接或日期:=<Leader>oo=
- 切换复选框:=<C-space>=
- 切换当前行为标题或反之:=<Leader>o*=
- 切换 当前标题的折叠:=<TAB>=
- 切换整个文件的折叠:=<S-TAB>=
- 归档标题:=<Leader>o$=
- 添加归档标签:=<Leader>oA=
- 更改标签:=<Leader>ot=
- 提升标题:=<<=
- 降级标题:=>>=
- 提升子树:=<s=
- 降级子树:=>s=
- 添加