Top Related Projects
Modernity meets insane extensibility. The future of organizing your life in Neovim.
Orgmode clone written in Lua for Neovim 0.10.0+.
Text outlining and task management for Vim based on Emacs' Org-Mode
Quick Overview
nvim-orgmode/orgmode is a Neovim plugin that brings Org mode functionality to Neovim. It aims to provide a comprehensive set of features for note-taking, task management, and document organization, similar to Emacs' Org mode, but tailored for Neovim users.
Pros
- Native Neovim integration, leveraging Lua for better performance and extensibility
- Supports core Org mode features like TODO lists, timestamps, and agenda views
- Provides syntax highlighting and folding for Org files
- Actively maintained and regularly updated
Cons
- May not have full feature parity with Emacs' Org mode
- Learning curve for users unfamiliar with Org mode concepts
- Potential performance issues with very large Org files
- Limited ecosystem compared to Emacs' Org mode
Code Examples
- Basic TODO item creation:
require('orgmode').setup{}
vim.api.nvim_set_keymap('n', '<leader>ot', ':lua require("orgmode").action("capture.prompt")<CR>', {noremap = true, silent = true})
This code sets up the orgmode plugin and creates a keybinding to open the capture prompt for quick TODO creation.
- Configuring custom TODO keywords:
require('orgmode').setup({
org_todo_keywords = {'TODO', 'NEXT', 'WAITING', '|', 'DONE', 'CANCELLED'},
org_todo_keyword_faces = {
WAITING = ':foreground blue :weight bold',
CANCELLED = ':foreground red :weight bold',
},
})
This example customizes the TODO keywords and their appearance in Org files.
- Setting up agenda files:
require('orgmode').setup({
org_agenda_files = {'~/orgfiles/*', '~/my-orgs/**/*'},
org_default_notes_file = '~/orgfiles/refile.org',
})
This code configures the directories for agenda files and sets a default file for quick notes.
Getting Started
To get started with nvim-orgmode/orgmode:
- Install the plugin using your preferred package manager (e.g., packer.nvim):
use {'nvim-orgmode/orgmode', config = function()
require('orgmode').setup{}
end}
- Add basic configuration to your Neovim config file:
require('orgmode').setup({
org_agenda_files = {'~/orgfiles/**/*'},
org_default_notes_file = '~/orgfiles/refile.org',
})
- Open a file with a
.org
extension to start using Org mode features in Neovim.
Competitor Comparisons
Modernity meets insane extensibility. The future of organizing your life in Neovim.
Pros of Neorg
- Built from the ground up for Neovim, offering better integration and performance
- More extensible architecture with a modular design
- Supports advanced features like GTD workflows and custom parsers
Cons of Neorg
- Steeper learning curve due to its unique syntax and concepts
- Smaller community and ecosystem compared to Orgmode
- Less mature and potentially less stable than Orgmode
Code Comparison
Orgmode syntax:
* TODO Buy groceries
SCHEDULED: <2023-05-15 Mon>
- [ ] Milk
- [ ] Eggs
- [ ] Bread
Neorg syntax:
* TODO Buy groceries
- Milk
- Eggs
- Bread
@scheduled 2023-05-15
Both Orgmode and Neorg are powerful note-taking and organization tools for Neovim. Orgmode is more established and closely follows the original Emacs Org mode, making it familiar to existing Org mode users. Neorg, on the other hand, offers a fresh approach tailored specifically for Neovim, with potential for more advanced features and better performance. The choice between the two depends on your familiarity with Org mode, desired features, and willingness to learn a new system.
Orgmode clone written in Lua for Neovim 0.10.0+.
Pros of orgmode
- More comprehensive and feature-rich implementation of Org mode for Neovim
- Active development with frequent updates and bug fixes
- Larger community and more extensive documentation
Cons of orgmode
- Potentially higher resource usage due to more features
- Steeper learning curve for new users
- May have more dependencies and setup requirements
Code Comparison
orgmode:
require('orgmode').setup({
org_agenda_files = {'~/Dropbox/org/*', '~/my-orgs/**/*'},
org_default_notes_file = '~/Dropbox/org/refile.org',
})
orgmode>:
require('orgmode').setup()
The orgmode repository offers more configuration options out of the box, allowing for greater customization. The orgmode> repository provides a simpler setup process, which may be preferable for users who want a more streamlined experience.
Both repositories aim to bring Org mode functionality to Neovim, but orgmode appears to be the more mature and feature-complete option. However, orgmode> might be a good choice for users who prefer a lighter-weight implementation or are just getting started with Org mode in Neovim.
Text outlining and task management for Vim based on Emacs' Org-Mode
Pros of vim-orgmode
- More mature and stable, with a longer development history
- Supports Vim in addition to Neovim, offering broader compatibility
- Has a larger user base, potentially leading to more community support and resources
Cons of vim-orgmode
- Less actively maintained, with fewer recent updates
- May lack some modern features and optimizations found in orgmode
- Written in Vimscript, which can be slower than Lua-based alternatives
Code Comparison
vim-orgmode:
" Enable vim-orgmode
let g:org_agenda_files = ['~/org/index.org']
let g:org_todo_keywords = ['TODO', 'NEXT', '|', 'DONE']
orgmode:
require('orgmode').setup_ts_grammar()
require('orgmode').setup({
org_agenda_files = {'~/org/*'},
org_default_notes_file = '~/org/refile.org',
})
Summary
While vim-orgmode offers broader compatibility and a more established user base, orgmode provides a modern, Lua-based alternative specifically designed for Neovim. The choice between the two depends on factors such as your preferred editor, desired features, and willingness to adopt newer technologies.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
#+HTML:
#+HTML:
- nvim-orgmode
Orgmode clone written in Lua for Neovim
[[#installation][Installation]] ⢠[[#docs][Docs]] ⢠[[#showcase][Showcase]] ⢠[[file:./docs/troubleshoot.org][Troubleshoot]] ⢠[[#plugins][Plugins]] ⢠[[file:./docs/contributing.org][Contributing]] ⢠[[#thanks-to][Kudos]]
#+HTML:
** Quickstart
*** Requirements
- Neovim 0.10.0 or later
*** Installation :PROPERTIES: :CUSTOM_ID: installation :END:
Use your favourite package manager. We recommend [[https://github.com/folke/lazy.nvim][lazy.nvim]]:
#+BEGIN_SRC lua
{
'nvim-orgmode/orgmode',
event = 'VeryLazy',
ft = { 'org' },
config = function()
-- Setup orgmode
require('orgmode').setup({
org_agenda_files = '/orgfiles/**/*',
org_default_notes_file = '/orgfiles/refile.org',
})
-- NOTE: If you are using nvim-treesitter with ~ensure_installed = "all"~ option
-- add ~org~ to ignore_install
-- require('nvim-treesitter.configs').setup({
-- ensure_installed = 'all',
-- ignore_install = { 'org' },
-- })
end, } #+END_SRC
For more installation options see [[file:./docs/installation.org][Installation]] page.
*** Docs :PROPERTIES: :CUSTOM_ID: docs :END:
Online docs is available at [[https://nvim-orgmode.github.io]].
To view docs in orgmode format in Neovim, run =:Org help=.
Vim help docs is available at =:help orgmode.txt= *** Usage
- Open agenda prompt: =
oa= - Open capture prompt: =
oc= - In any orgmode buffer press =g?= for help
If you are new to Orgmode, see [[file:./docs/index.org#getting-started][Getting started]] section in the Docs.
** Showcase :PROPERTIES: :CUSTOM_ID: showcase :END:
*** Agenda
#+CAPTION: agenda #+NAME: agenda [[https://user-images.githubusercontent.com/1782860/123549968-8521f600-d76b-11eb-9a93-02bad08b37ce.gif]]
*** Org file
#+CAPTION: orgfile #+NAME: orgfile [[https://user-images.githubusercontent.com/1782860/123549982-90752180-d76b-11eb-8828-9edf9f76af08.gif]]
*** Capturing and refiling
#+CAPTION: capture #+NAME: capture [[https://user-images.githubusercontent.com/1782860/123549993-9a972000-d76b-11eb-814b-b348a93df08a.gif]]
*** Autocompletion
#+CAPTION: autocomplete #+NAME: autocomplete [[https://user-images.githubusercontent.com/1782860/123550227-e8605800-d76c-11eb-96f6-c0a677d562d4.gif]]
** Features
*** TL;DR
- Agenda view
- Search by tags/keyword
- Clocking time
- Repeatable dates, date and time ranges
- Capturing to default notes file/destination
- Archiving (archive file or ARCHIVE tag)
- Exporting (via
emacs,pandocand custom export options) - Notifications (experimental, see issue [[https://github.com/nvim-orgmode/orgmode/issues/49][#49]])
- Calendar popup for easier navigation and date updates
- Various org file mappings:
- Promote/Demote
- Change TODO state
- Change dates
- Insert/Move/Refile headlines
- Change tags
- Toggle checkbox state
- Remote editing from agenda view
- Repeatable mapping via [[https://github.com/tpope/vim-repeat][vim-repeat]]
*** Detailed breakdown
- Agenda prompt:
- Agenda view (=a=):
- Ability to show daily(=vd=)/weekly(=vw=)/monthly(=vm=)/yearly(=vy=) agenda
- Support for various date settings:
- DEADLINE: Warning settings - example:
<2021-06-11 Fri 11:00 -1d> - SCHEDULED: Delay setting - example:
<2021-06-11 Fri 11:00 -2d> - All dates - Repeater settings:
- Cumulate type:
<2021-06-11 Fri 11:00 +1w> - Catch-up type:
<2021-06-11 Fri 11:00 ++1w> - Restart type:
<2021-06-11 Fri 11:00 .+1w>
- Cumulate type:
- Time ranges - example:
<2021-06-11 Fri 11:00-12:30> - Date ranges - example:
<2021-06-11 Fri 11:00-12:30>--<2021-06-13 Sun 22:00>
- DEADLINE: Warning settings - example:
- Properly lists tasks according to defined dates (DEADLINE,SCHEDULED,Plain date)
- Navigate forward (=f=)/backward(=b=) or jump to specific date (=J=)
- Go to task under cursor in current window(=
=) or other window(= =) - Print category from ":CATEGORY:" property if defined
- List tasks that have "TODO" state (=t=):
- Find headlines matching tag(s) (=m=):
- Search for headlines (and it's content) for a query (=s=):
- [[file:./docs/configuration.org#advanced-search][Advanced search]] for tags/todo kewords/properties
- Notifications (experimental, see issue [[https://github.com/nvim-orgmode/orgmode/issues/49][#49]])
- Clocking time
- Agenda view (=a=):
- Capture:
- Define custom templates
- Fast capturing to default notes file via =
= - Capturing to specific destination =
or= - Abort capture with =
ok=
- Org files
- Clocking time
- Refile to destination/headline: =
or= - Increase/Decrease date under cursor: =
= / = = - Change date under cursor via calendar popup: =cid=
- Change headline TODO state: forward =cit= or backward =ciT=
- Open hyperlink or date under cursor: =
oo= - Toggle checkbox: =
= - Toggle current line to headline and vice versa: =
o*= - Toggle folding of current headline: =
= - Toggle folding in whole file: =
= - Archive headline: =
o$= - Add archive tag: =
oA= - Change tags: =
ot= - Promote headline: =<<=
- Demote headline: =>>=
- Promote subtree: =<s=
- Demote subtree: =>s=
- Add headline/list item/checkbox: =
= - Insert heading after current heading and it's content: =
oih= - Insert TODO heading after current line: =
oiT= - Insert TODO heading after current heading and it's content: =
oit= - Move headline up: =
oK= - Move headline down: =
oJ= - Highlighted code blocks (
#+BEGIN_SRC filetype) Exporting (viaemacs,pandocand custom export options)
Link to detailed documentation: [[./docs/index.org][DOCS]]
** Plugins Check [[file:./docs/plugins.org][Plugins]] page for list of plugins.
#+BEGIN_QUOTE NOTE: None of the Emacs Orgmode plugins will be built into nvim-orgmode. Anything that's a separate plugin in Emacs Orgmode should be a separate plugin in here. The point of this plugin is to provide functionality that's built into Emacs Orgmode core, and a good foundation for external plugins. #+END_QUOTE
If you want to build a plugin, post suggestions and improvements on [[https://github.com/nvim-orgmode/orgmode/issues/26][Plugins infrastructure]] issue.
** Thanks to :PROPERTIES: :CUSTOM_ID: thanks-to :END:
- [[https://github.com/dhruvasagar][@dhruvasagar]] and his [[https://github.com/dhruvasagar/vim-dotoo][vim-dotoo]] plugin that got me started using orgmode. Without him this plugin would not happen.
- [[https://github.com/milisims][@milisims]] for writing a treesitter parser for org
- [[https://github.com/jceb/vim-orgmode][vim-orgmode]] for some parts of the code (mostly syntax)
Top Related Projects
Modernity meets insane extensibility. The future of organizing your life in Neovim.
Orgmode clone written in Lua for Neovim 0.10.0+.
Text outlining and task management for Vim based on Emacs' Org-Mode
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot