History of SelectedVimTips

Version 14

SelectedVimTips

some collected vim tips and settings for manipulating files

Created by: xing, Last modification: 07 Aug 2005 (13:20 UTC) by xing

useful .(g)vimrc mappings

The attachment id given is not valid. here you can get a copy of my .vimrc file. click on it to view it and to download it right click the file and choose: save as...

vim to the rescue!

what do you do when you have a php function in front of you and you don't know what it does or you can't remember in what order the parameters are passed in?

i'm not sure what you do, but i move my cursor onto that function and hit <ctrl-shift-p>. that's it!

just recently i stumbled accross this useful vim tip:
it allows you to position your cursor on any php function and using your mapping it will open the appropriate page on www.php.net

i use this in my .vimrc
{code()}
" open window in browser with php function under cursor
if has("gui_running")
nmap <c-s-p> :!opera -newpage http://us2.php.net/
R
W\#function.
R
W<cr>
elseif
nmap <c-s-p> :!lynx -accept_all_cookies http://us2.php.net/
R
W\#function.
R
W<cr>
endif
{code}

obviously you can replace opera with your favourite browser and replace the mapping with your preferred mapping. unfortunately lynx doesn't work in gvim and thus you need to open the page in an external browser.

Note: don't forget to use <ctrl-v><ctrl-r> and <ctrl-v><ctrl-w> to get ^R and ^W


some useful .vimrc settings

hide buffers

when you add the following to you .vimrc file:
{code()}
set hid
{code}
buffers will be hidden instead of closed when you edit a new file in the same window. this means that the undo history of the file is still in tact and when you call the file again using minibufexporer or :<buffer number="">b , you can hit u to undo previous additions.

when you do this though, you can have unsaved buffers in the background...

auto source .vimrc on save

{code()}
if has("autocmd")
" source the .vimrc file on save to apply all changes immediately
autocmd! bufwritepost .vimrc source ~/.vimrc
endif
{code}

setting up vim for bitweaver

{code()}
if has("autocmd")
autocmd bufnewfile,bufenter * set noet ts=4 sw=4
endif
{code}

using Ctrl-A and Ctrl-X

you can increase number using <ctrl-a> and decrease them using <ctrl-x>. if you do this with padding zeros, it might cause problems as 0777 is an octal value and increasing this will give you some strange results. to avoid this, add the following to your .vimrc:
{code()}
set nrformats-=octal
{code}

generic vim tips and tricks

:reg

registers are an awesome feature of vim. they are places where you can yank text and call it later on. the text you store in the registers is persistent and will remain in there until you remove it or you replace it with different content. i have entire templates stored in the registers which allows me to quickly create new templates with all indenting, free of typos...

to store some text in a register execute the following from within normal mode:
{code()}
<s-v>4j"gy
{code}

explanation:
<s-v>
<shift-v> — enter visual mode linewise
4j
mark the next 4 lines
"g
access the g register
y
yank the contents of the marked text to the accessed register and the normal register, accessible through p

call that same text stored in the g register:
{code()}
"gp
{code}

explanation:
"g
access the g register
p
put

to append all text from the cursor to the next > character to the contents of "g register, execute the following command:
{code()}
"Gyf>
{code}

explanation:
"G
append the following stuff to the "g register
y
yank
f>
find the next occurance of > in the current line (including the > character). if you want to exclude the character use t>, which will find to the character.

to view the contents of all your registers, type
{code()}
:reg
{code}

background reading

:he reg
:he y

:grep

grep can be used from within vim. it's basically as if you're using it in a console, but it has some great bonuses when using it from within vim.

say you are in the root directory of /bitweaver/, try tiping the following:
{code()}
:grep -rni --include="*.tpl" 'html_checkboxes' *
{code}

this will generate some lines of where grep finds the occurances of 'html_checkboxes'. once done, hit enter and it will open a page with the first occurance.

once you are done editing this code, you can type:
{code()}
:copen
{code}

this will open a new window in the bottom right corner with all the results grep found earlier. all you do now is move the cursor onto the file of interest and hit <enter> or double click on the file of interest (if you have mouse support enabled).

if you should do a new search on top of the initial search, you can follow the same procedure and return back to the 'html_checkboxes' results by typing:
{code()}
:colder
{code}

returning back to the more recent results, you just need to type:
{code()}
:cnewer
{code}

background reading

{code()}
:he :grep
:he :copen
{code}
</enter></shift-v></s-v></s-v></ctrl-x></ctrl-a></buffer></ctrl-w></ctrl-v></ctrl-r></ctrl-v></cr></c-s-p></cr></c-s-p></ctrl-shift-p>
Page History
Date/CommentUserIPVersion
28 Mar 2006 (13:39 UTC)
xing194.152.164.4522
Current • Source
xing194.152.164.4521
View • Compare • Difference • Source
xing194.152.164.4520
View • Compare • Difference • Source
xing194.152.164.4519
View • Compare • Difference • Source
xing194.152.164.4517
View • Compare • Difference • Source
xing194.152.164.4516
View • Compare • Difference • Source
xing194.152.164.4515
View • Compare • Difference • Source
xing194.152.164.4514
View • Compare • Difference • Source
xing194.152.164.4513
View • Compare • Difference • Source
xing194.152.164.4512
View • Compare • Difference • Source
xing194.152.164.4511
View • Compare • Difference • Source
xing194.152.164.4510
View • Compare • Difference • Source
xing194.152.164.459
View • Compare • Difference • Source
xing194.152.164.458
View • Compare • Difference • Source
xing194.152.164.457
View • Compare • Difference • Source
xing194.152.164.456
View • Compare • Difference • Source
xing194.152.164.455
View • Compare • Difference • Source
xing194.152.164.454
View • Compare • Difference • Source
xing194.152.164.453
View • Compare • Difference • Source
xing194.152.164.452
View • Compare • Difference • Source
xing194.152.164.451
View • Compare • Difference • Source