* Tim Chase <v...@tim.thechases.com> [110814 11:36]: > On 08/14/2011 11:42 AM, Tim Johnson wrote: > > There are lots of ways to do this, so I'll toss a couple out there > and you can pick & choose depending on your needs. > > The first & easiest (assuming the first/"previous" line is an even > multiple of 'shiftwidth' and corresponds to your 'expandtab' > settings) is to just use the ">" or "<" commands to shift over the > range. In the above example, I'd select the 2nd & 3rd lines and hit > ">" to shift them right one. If I needed multiple shifts to get > them into position, I'd then hit "." (period) to repeat the shift > until they're in place. I use this method all the time... > If the 1st/"previous" line's leading whitespace *isn't* a multiple > of 'sw', making the previous method less helpful, then I'd consider > using visual-block mode to select the left-hand column of the stuff > to indent and then hit "I" (capital-eye) to insert at the beginning > of the block. Put in the expected/proper indentation, and then hit > <esc> which will put that indentation on all the lines. If the > indentation of the 1st/"previous" line is a bit crazy (say, a sick > mixture of tabs/spaces), then you could copy that indentation from > the first line and then after hitting "I" in visual-block-mode, use > control+R followed by a double-quote to insert the crazy > indentation. > > Both of those are somewhat manual. If you want to create a mapping, > you could do something like > > :vnoremap <f4> :'<+1,'>s/^\s*/\=matchstr(getline("'<"), > '^\s*')<cr> > > which would allow you to visually select the lines in question. The > mapping will then sniff the indentation of the first line you > selected and then apply it to all the lines afterward. > > Finally, if you have oodles of these in your file and you don't want > to visually select each piece manually, you can break out the > nuclear option...something like > > :g/^\s*"""/ka|+,/"""/s/^\s*/\=matchstr(getline("'a"), '^\s*') > > (this burns the "a" mark, so adjust the "ka" and "'a" accordingly if > you don't want to tromp them) which will search for every line > beginning with three double-quotes (with optionally leading > whitespace) and then adjust from the following line ("+") through > the next match of three double-quotes and pull down the indentation > from the first/"previous" line. If you don't want to burn ANY > marks, it might be doable with > > :g/^\s*"""/+,/"""/s/^\s*/\=matchstr(getline(line('.')-1), '^\s*') > > So there you have a whole mess of options depending on the time, > energy, and enormity of the task at hand. :) Hope it helps, It sure does. These instructions above open all kinds of possibilities. Thanks very much
-- Tim tim at johnsons-web dot com or akwebsoft dot com http://www.akwebsoft.com -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php