The first script: align
This commit is contained in:
commit
2afd025a55
40
align/plugin/align.vim
Normal file
40
align/plugin/align.vim
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
function! s:Align(sequence) range
|
||||||
|
" First, find the rightmost occurence of sequence in all lines
|
||||||
|
let l:index = 0
|
||||||
|
for i in range(a:firstline, a:lastline)
|
||||||
|
let l:line = getline(i)
|
||||||
|
let l:seqpos = stridx(l:line, a:sequence)
|
||||||
|
if l:seqpos > l:index
|
||||||
|
let l:index = l:seqpos
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
echo "Rightmost position: " . l:index
|
||||||
|
|
||||||
|
" Now, for each line, find the first occurrence of sequence, and insert
|
||||||
|
" spaces until sequence was shifted to l:index
|
||||||
|
for i in range(a:firstline, a:lastline)
|
||||||
|
let l:line = getline(i)
|
||||||
|
let l:seqpos = stridx(l:line, a:sequence)
|
||||||
|
|
||||||
|
if l:seqpos == -1
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Build string of spaces
|
||||||
|
let l:spaces = ""
|
||||||
|
for j in range(l:seqpos, l:index-1)
|
||||||
|
let l:spaces = l:spaces . ' '
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Insert spaces right before the sequence
|
||||||
|
if l:seqpos > 0
|
||||||
|
let l:line = l:line[: l:seqpos-1] . l:spaces . l:line[l:seqpos :]
|
||||||
|
else
|
||||||
|
let l:line = l:spaces . l:line
|
||||||
|
endif
|
||||||
|
|
||||||
|
call setline(i, l:line)
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
command! -nargs=1 -range Align <line1>,<line2>call s:Align(<args>)
|
Loading…
Reference in a new issue