This plugin introduces a file type board
which allows you to easily write quick notes
and some shortcuts to files, directories and additional commands.
After setting up a custom
Key
, you can bring up the board using the following key sequence:
Key
Enterand to return:
Key
Esc
You can use your preferred plugin manager using the string 'azabiong/vim-board'
. For example:
vim-plug .vim
Plug 'azabiong/vim-board'
lazy.nvim .lua
{
"azabiong/vim-board",
init = function()
-- settings
end,
},
or, Vim's built-in package feature:
Linux, Mac Windows ~/.vim ~/vimfiles in the terminal:
cd ~/.vim && git clone --depth=1 https://github.com/azabiong/vim-board.git pack/azabiong/start/vim-board cd ~/.vim && vim -u NONE -c "helptags pack/azabiong/start/vim-board/doc" -c q
The first thing is to define a directory to store the board
files.
And the next is to assign a convenient key to bring up the board
with menu
.
The plugin default shortcut is a single quote and space if available.
.vim
let BoardPath = '~/.config/boards'
nmap '<Space> <Plug>(BoardMenu)
.lua
vim.g.BoardPath = '~/.config/boards'
vim.keymap.set('n', "'<Space>", '<Plug>(BoardMenu)')
Now, save the changes and reload the plugin.
The plugin uses .board
and .bd
as file extensions, and you can display each item differently by using indentation and some leading characters.
Each section starts at the beginning of a line, and can have different syntax depending on its type.
Pressing the BoardMenu
key will bring up the most recently used board
with the auto-expanding menu
.
You can enter keys defined on the board
, or switch between boards using the following keys:
keys
key | function |
---|---|
Enter | edit current board |
Esc | return |
; | return (optional) |
Space | scroll down |
↓ | scroll down |
↑ | scroll up |
CtrlSpace | scroll up |
- | switch to previous board |
= | switch to main board |
+ | add new board |
: | command-line mode |
/ | search (optional) |
< | load links |
> | unload links |
The plugin loads the shortcut links defined in the :Links
section.
The following example defines two links:
:Links
group
#key value
pn ~/Languages/Python/notes.py
\py ~/Languages/Python/ | edit .
Each link is a simple space-separated key-value pair, and uses the same
indentation as the TEXT
field starting at column 6 or higher.
Modified links take effect immediately after saving.
Key
A key can consist of any combination of symbols, alphanumeric, and Unicode characters except those that start with some predefined characters.
Available leading characters:
~!@$%^&*_()[]{}'`";,.\/? 0-9 a-z A-Z and Unicode characters
Used in the menu and syntax:
- previous # comment
= main | command
+ new
< load
> unload
: command
The same key can be defined differently on each board.
Long keys can be activated by entering only the unique prefix part of the key.
For example, if you define a link with a long key xylophone
, and no other keys start with xy
,
you can open the link with xy
Enter.
Path
To easily define a link to a file, the plugin supports copying the current file's path to a register
when the menu
key is pressed (by default the b
register).
To paste the path stored in register b
in insert mode:
Ctrl+R b
When switching to another board stored in the BoardPath
directory,
you can omit the path and specify only the file name. For example:
'a another.board
or
'a subdirectory/another.board
Switching boards using the defined keys will automatically load the links defined on the board.
Commands
Additional commands can be added using the |
bar character.
For example, to browse files after changing the current working directory:
\py ~/Languages/Python/ | edit .
After opening the file, to go to the line 128:
pn ~/Languages/Python/notes.py | 128
More commands can be combined together:
\d1 ~/Directory/ | NERDTreeCWD | wincmd p | edit README.md
You can also define just a list of commands without specifying a file or directory.
For example, to define a command that copies frequently used commands or strings to the clipboard:
s1 | let @+ = "copy this string to the clipboard"
To define a substitution command:
ss | %s/Foo/Bar/gc
To define a set of temporary key-maps:
key | nn f0 <Cmd>echo 0<CR>
| nn f9 <Cmd>echo 9<CR>
To define some input from the shell tool to the scratchpad, Board*
:
sh1 | Board* | r! echo "This is the scratchpad on the Board"
sh2 | Board* | r! curl -sI example.com
Multi-line commands can be set using the leading bar |
character.
c1 ~/directory/or_file
| echo 'foo'
| echo 'bar'
You can refer to links using the '&' symbol instead of duplicates. For example:
\d1 ~/directory1/ | &_N
\d2 ~/directory2/ | &_N
_N | NERDTreeCWD | wincmd =
When using the |
bar character as a shell pipe
or other meaning, you can
switch to command-line mode input by adding a colon :
after the bar.
sh3 | Board* |: r! ls | wc
sh4 | Board* |: r! cat ~/.ssh/known_hosts | awk '$1 ~ /[0-9]/ { print $1; exit }'
To stop a long list of commands while processing, press the menu
key and
input Ctrl+C.
For more information about options, please see:
:h Board-Options
The plugin provides two default color sets that can be automatically loaded depending on the current background
mode.
You can use the native hi command to customize colors starting with Board
, and save them to the configuration file
or color scheme.
BoardHelp BoardSection BoardGroup BoardSpecial BoardMarker BoardLink BoardLed...
Example
:hi BoardSpecial ctermfg=208 guifg=#ff8700
If you have any issues that need fixing, comments or new features you would like to add, please feel free to open an issue.
MIT