Tip 1014 Printable Monobook Previous Next
created 2005 · complexity basic · author Robert Schols · version 5.7
This command will make a visual selection of the lines that have the same indent level or more as the current line.
:exe "normal V" | let temp_var=indent(line(".")) | while indent(line(".")+1) >= temp_var | exe "normal j" | endwhile
Comments[]
A slight modification, to select the area above the cursor position as well, and the whole thing wrapped in a function (and nmapped to <Space>):
function! SelectIndent () let temp_var=indent(line(".")) while indent(line(".")-1) >= temp_var exe "normal k" endwhile exe "normal V" while indent(line(".")+1) >= temp_var exe "normal j" endwhile endfun nmap <Space> :call SelectIndent()<CR>
Currently, I just :set foldmethod=indent
and select the folded area.
I believe this function might be better.
function SelectIndent() let cur_line = line(".") let cur_ind = indent(cur_line) let line = cur_line while indent(line - 1) >= cur_ind let line = line - 1 endw exe "normal " . line . "G" exe "normal V" let line = cur_line while indent(line + 1) >= cur_ind let line = line + 1 endw exe "normal " . line . "G" endfunction nnoremap vip :call SelectIndent()<CR>
--February 23, 2013
- Thanks, but any chance of mentioning why it is better? JohnBeckett (talk) 23:42, February 23, 2013 (UTC)