bobwood2000
asked on
vim php indentation
This is admittedly a minor issue, but given how much time I spend using vim, I would very much appreciate an answer.
How can I set vim's indentation such that <?php and the corresponding ?> have the same indentation? Currently when I type ?> the indentation remains as great as the preceding line's indentation, rather than the indentation of <?php. I've tried cindent, autoindent, and even smartindent.
Example:
<span id="StatusText">
<hr />
<?php
echo "username: " . $username . "<hr />";
echo "balance: " . $balance . " <hr />";
?>
<br />
<?php
echo "hello"
?>
Thanks
How can I set vim's indentation such that <?php and the corresponding ?> have the same indentation? Currently when I type ?> the indentation remains as great as the preceding line's indentation, rather than the indentation of <?php. I've tried cindent, autoindent, and even smartindent.
Example:
<span id="StatusText">
<hr />
<?php
echo "username: " . $username . "<hr />";
echo "balance: " . $balance . " <hr />";
?>
<br />
<?php
echo "hello"
?>
Thanks
ASKER
I tried your vimrc file, but it doesn't seem to change anything. I did have to modify it a bit though (eg. changed 3D8 to 3), such that it would work with my version of vim (6.2.426).
I get annoyed with the same thing.
You might find it interesting that the short tags <? and ?> pair up correctly. In fact, the indent file for PHP (the rules about when to indent) say:
" Indent after php open tags
if line =~ '<?php'
let ind = ind + &sw
endif
if cline =~ '\?\>' " Please fix this...
let ind = ind - &sw
endif
so even the original writer couldn't get it to work
You might find it interesting that the short tags <? and ?> pair up correctly. In fact, the indent file for PHP (the rules about when to indent) say:
" Indent after php open tags
if line =~ '<?php'
let ind = ind + &sw
endif
if cline =~ '\?\>' " Please fix this...
let ind = ind - &sw
endif
so even the original writer couldn't get it to work
ASKER
Interesting...what file did those regular expressions come from? And, why does "let ind = ind - &sw" cause the indent to change?
For me the short tags (e.g. <? and ?>) don't cause any change in indenting at all. However, I have to use the long tag (e.g. <?php) since otherwise it confuses the <?xml tag with <?php.
For me the short tags (e.g. <? and ?>) don't cause any change in indenting at all. However, I have to use the long tag (e.g. <?php) since otherwise it confuses the <?xml tag with <?php.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
The code is written in Vims own script language, type :help vim-script-intro for more info
_Blue
_Blue
ASKER
Works wonderfully! Thanks!
set autoindent
set tabstop=3D8 " Tabs are always 8 characters!!!
set softtabstop=3D4 shiftwidth=3D4 " default character indentation level
set expandtab " use spaces instead of tabs for indentation
set ruler " show cursor postion
set esckeys " allow cursor keys in insert mode
set showcmd " Show (partial) command in status line.
"set hlsearch " Highlight all matches of the last search pattern (so=
metimes annoying, good for code)
set showmatch " show matching parens/brackets
set backspace=3D2 " allows for backspace beyond current insert session
set joinspaces " insert 2 spaces after a period when joining lines
set fileformat=3Dunix " The Right Way(tm)
" Don't be noisy, don't flash the screen
set noerrorbells visualbell
" note : this only works for the console! it is reset when gvim starts
set t_vb=3D