When working with larger or rather deeply nested yaml files (Hi Rails), it happens quickly that I loose sight of where I am with regards to the indentation hierarchy of the file.
A very simple example to illustrate my point:
1| en: 2| activerecord: 3| errors: 4| messages: 5| parse_error: is syntactically not correct
When the cursor is on the line 5, I would like to somehow get the info
en -> activerecord -> errors -> messages -> parse_error
via a command or the likes.
The right way to do it would be to use an external program if the markup language presents a complex structure or particular edge cases, like the bunch or tools you can find for JSON.
Though YAML seems to be pretty straightforward Even if YAML seems to be pretty complex, I started with a one liner working on your snippet to end up with this Vim script you could place in
function! YAMLTree() let l:list =  let l:cur = getcurpos() " Retrieve the current line indentation let l:indent = indent(l:cur) + 1 " Loop from the cursor position to the top of the file for l:n in reverse(range(1, l:cur)) let l:i = indent(l:n) let l:line = getline(l:n) let l:key = substitute(l:line, '^s*(<w+>):.*', "\1", '') " If the indentation decreased and the pattern matched if (l:i < l:indent && l:key !=# l:line) let l:list = add(l:list, l:key) let l:indent = l:i endif endfor let l:list = reverse(l:list) echo join(l:list, ' -> ') endfunction nnoremap <F5> :call YAMLTree()<CR>
It loops on each line from the cursor to the top looking for a word
w+ between zero or more spaces
s* and a colon
:, followed by anything. It also checks for indentation to recognize the keys hierarchy.
Correct answer by LEI on December 3, 2020
(In a Rails view it can also show you translations of the current line's i18n key, although that's not the question here.)
Answered by Andy Stewart on December 3, 2020
I'm using the yaml plugin by Meijvogel and that has a
YamlDisplayFullPath function which he recommends putting into autodisplay mode though I prefer it on
InsertLeave like so:
autocmd! InsertLeave *.yml YamlDisplayFullPath
Answered by Thomas R. Koll on December 3, 2020
4 Asked on November 10, 2021
2 Asked on August 31, 2021 by oalders
1 Asked on August 31, 2021 by user96649
1 Asked on August 31, 2021 by rohan
1 Asked on August 31, 2021 by lus-de-sousa
2 Asked on August 31, 2021
2 Asked on August 31, 2021 by elliptical-view
1 Asked on August 31, 2021 by tallboy
2 Asked on August 31, 2021 by bapi
3 Asked on August 31, 2021
1 Asked on August 31, 2021
Get help from others!