[ale] Appending in VIM

Scott Plante splante at insightsys.com
Wed Feb 6 10:05:36 EST 2013


Oops, when I typed 
:s/^/# / 
I meant: 
:.,$s/^/# / 
dot-comma-dollar in front of the s means from the current line to the last line. What was in my mind at the time was that you didn't need to know the actual line numbers. 


I like the visual block method too. You can combine that with the :r! or !! I mentioned to read in the mysql output from within vim. 


I was also thinking about using :! mysql ....>> name.pl from inside vim when I mentioned having to do a write before hand. I see now you meant typing the mysql from the shell. 
----- Original Message -----

From: "Scott Plante" <splante at insightsys.com> 
To: "Atlanta Linux Enthusiasts" <ale at ale.org> 
Sent: Tuesday, February 5, 2013 9:12:38 PM 
Subject: Re: [ale] Appending in VIM 


I have two further incremental improvements. 


First: 



As JD and Chris noted, you can insert with :s command. However, in this case you know you're going to the end of the file because you used >>, so if you put your cursor on the top line, you can just do: 

:s/^/# / 

No need for the final g--that says do all occurrences on the line and there's only one start of line per line. 

Of course, to use this method, you have to write the file (:w) before you begin, and re-read (:e) after the command execution, but before the :s. 

And, you still need to move the new comment lines to where you want them in the script, if it's not the end. 





Second: 
<blockquote>


You can use :r! to insert the output of a command below your current line, so you could just go to the line above where you want your new comment and type 

:r! mysql .... |sed 's/^/\# ' 

And your new comment block will appear where you want it in the script, without a special :w and :e. You need the backslash before the # in the sed because # is replaced with the other file you're editing. For example, if you vi a.pl, then type :e b.pl to edit that script, :r # will read a.pl into b.pl edit buffer on the line below your cursor. 
</blockquote>




By the way, I often just use !! instead of :r! . !! says send the current line as stdin to the following command, and replace the current line with the command's stdout. I usually find it quicker to create a blank line and do the !! on that line. You can also use ! with a line range to, say, do sorting (replace lines with their sorted equivalent). 




Scott 
----- Original Message -----

From: "Alex Carver" <agcarver+ale at acarver.net> 
To: ale at ale.org 
Sent: Tuesday, February 5, 2013 7:00:10 PM 
Subject: Re: [ale] Appending in VIM 

On 2/5/2013 15:09, Chris Fowler wrote: 
> On 02/05/2013 04:49 PM, JD wrote: 
>> If you know the line number range, doesn't this work? 
>> 
>> 7,53s/$/#_/g 
> 
> That is one way and it works, but need to use ^ for beginning instead 
> of the end of line. 
> 

There's also visual-block mode. Move to the first column of the first 
line you want to change, Ctrl-V then move the cursor down to the last 
line (you can use any cursor movement such as [n]j to move n lines down 
or use / to search for a keyword but then that will highlight extra 
columns so use 'h' to shrink back to one column). Now use captial i (I) 
to do a visual-block insert, type in the # once, press <ESC>, and move 
away from the line. 

Or you can do it during the mysql command and avoid hand editing 
completely. Pipe through sed on its way to the file: 

mysql .... | sed 's/^/#/g' >> perlfile.pl 
_______________________________________________ 
Ale mailing list 
Ale at ale.org 
http://mail.ale.org/mailman/listinfo/ale 
See JOBS, ANNOUNCE and SCHOOLS lists at 
http://mail.ale.org/mailman/listinfo 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ale.org/pipermail/ale/attachments/20130206/debeae51/attachment.html>


More information about the Ale mailing list