Pierre-Antoine LaFayette
Pierre-Antoine LaFayette

Reputation: 24412

Vim as a note taking platform: Jump to tag in vertically split windows

In the past, I have used Vim as a note taking platform by creating an index.txt file with a list of tags using the Vim help file format and then creating a bunch of text files that have the normal *Help_Tag* link syntax so that using CTRL-] on a tag in the index.txt file will jump to the respective tag in an arbitrary notes text file. You need to do :helptags dir to generate the tags for the directory (where dir is the path to the notes directory).

alt text

What I am looking for is a simple way to be on the left split window and open the tag under the cursor in the right split window. Something like CTRL-W v but for tag jumping and using the already open vertical split window.

The problem is if you do CTRL-] it will open the tag in the left pane and if you do CTRL-W CTRL-] it creates a horizontally split window in the left pane.

There must be a way to do this that I'm overlooking.

Upvotes: 20

Views: 7681

Answers (4)

naught101
naught101

Reputation: 19573

If you're using headings as note titles, you could use Vim VOoM, which automatically outlines based on sytax and allows for easy navigation with the standard navigation keys.

Vim VOoM also works with foldmarkers, like in the example screenshot.

Upvotes: 0

michael
michael

Reputation: 11857

Probably the easiset would be an autocommand local mapping

au FileType index.txt nnoremap <buffer> <cr> 
    \ :vert belowright split 
    \ |tag <c-r><c-w>
    \ |vert resize 130<cr>

Note I use return

Upvotes: 1

DrAl
DrAl

Reputation: 72726

Try this mapping:

nmap <buffer> <C-]> :let word=expand("<cword>")<CR><C-W>l:exe "tag" word<CR>

It stores the word under the cursor in the variable word, then swaps the window and goes to the tag with that name. The <buffer> bit makes this mapping only apply to the current buffer.

Upvotes: 1

Amjith
Amjith

Reputation: 23914

map <A-]> :vsp<CR>:exec("tag ".expand("<cword>")) " Open the definition in a new vsplit

Upvotes: 2

Related Questions