History of SelectedVimTips

{maketoc}
! useful .(g)vimrc mappings
{attachment id=160 float=left} here you can get a copy of my ~/.vimrc, ~/.gvimrc and ~/.vim dir.

!! 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 [http://www.vim.org/tips/tip.php?tip_id=922|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 ~np~^R and ^W~/np~^

! 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}

!! php specific stuff
If you like SQL syntax highlighting inside Strings:
let php_sql_query = 1

Enable HTML syntax highlighting inside strings:
let php_htmlInStrings = 1

For highlighting parent error ] or ):
let php_parent_error_close = 1

For skipping a php end tag, if there exists an open ( or [ without a closing one:
let php_parent_error_open = 1

Enable folding for classes and functions:
let php_folding = 1

!! 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}

!! tags
this allows you to navigate bitweaver like a speeding bullet.

you will need to install [http://ctags.sf.net/|ctags] if you haven't got it installed yet.
in your bitweaver root directory type: __ctags -R__
this will create a file called __tags__ which will contain a reference of every function in bitweaver.
in your .vimrc file you need to set the path to this file, that vim always knows where to look for the functions:
{code}
set tags=./tags,../tags,/var/www/html/bitweaver/tags
{/code}
now start up vim and move your cursor on top of any function and hit ~np~CTRL+]~/np~
to return back to where you were, just hit CTRL+T
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