Link to home
Start Free TrialLog in
Avatar of bobwood2000
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
Avatar of Ivanov_G
Ivanov_G
Flag of Bulgaria image


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
Avatar of bobwood2000
bobwood2000

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
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.
ASKER CERTIFIED SOLUTION
Avatar of eeBlueShadow
eeBlueShadow

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
The code is written in Vims own script language, type :help vim-script-intro for more info

_Blue
Works wonderfully! Thanks!