2010-11-21 80 views
6

我最近从Eclipse切换到Vim。我喜欢这个。有几个我正在努力的hangup,但我遇到很多麻烦之一是PHP文档评论。在Eclipse中我可以输入:Vim:如何更改缩进脚本中的文本

/** [enter] 

下一行会自动填充

* 

所以我有:

/** 
* [comment goes here] 

我不知道是否有这样的事为vim。看起来有一些插件可以通过运行命令自动生成文档注释,但是我很乐意在打字时使用它们。

我正在玩PHP indent脚本(http://www.vim.org/scripts/script.php?script_id=1120),我知道它是什么时候它在一个文档评论块内,但我无法弄清楚如何让它实际改变文本并添加一个在块内部输入“*”后输入“*”。

我已经试过了我见过的其他插件做:

let @z = ' * ' 
put! z 

想这太:

exe 'normal!' '"zgp' 

,但没有运气。这是不是可以从一个缩进脚本,如果不是,我怎么才能真正让Vim识别一个文档注释块,并据此采取行动,而我正在打字?

任何帮助将不胜感激!

回答

2

无需篡改缩进文件。 Vim的formatoptions将为您和各种语言(而不仅仅是PHP)执行此操作。

确定您已经包含在你的formatoptionsr

:setlocal fo+=r "to set 
:set fo? "to query 

可以包括这在你的.vimrc.vim/ftplugin/php.vim(如果你只是想激活此为PHP)。

有关formatoptions和文件类型插件的更多信息,请参见:

+1

这是正确的路要走。作为一个非常全面的答案的快速总结,我会说'set fo + = r'给.vimrc。 – 2010-11-21 05:40:29

+1

感谢此...似乎工作很大 – andrew 2010-11-21 20:54:49

+0

奇怪,这工作时,我禁用所有插件,我设置fo + = r,但是当使用股票PHP缩进脚本(无修改),我设置fo + = r,它doesn没有工作。设置佛? ==“qrowcb”...任何想法?是否有其他设置可以禁用此设置? – andrew 2010-11-21 21:09:33

1

将下面的代码添加到您的vimrc会做类似于你想要的东西吗?

autocmd BufNewFile,BufRead *.php setlocal formatoptions+=r formatoptions+=o 
autocmd BufNewFile,BufRead *.php setlocal comments=s1:/*,mb:*,ex:*/,://,:# 

我目前还不能完全弄清楚如何让它不重写<!-- --->评论,它这样做的工作。即这将打破自动缩进<!-- -->评论。

编辑。按照Johnsyweb的分布,://,:#添加到comments

+0

'comments'应自动由所提供的'PHP进行设置。 vim'缩进脚本。 '<! - [...] - >'注释是HTML语法的一部分。 – Johnsyweb 2010-11-21 03:03:56

+0

@Johnsyweb是的,但上面的代码片段通过执行'comments = ...'来覆盖它。如果我反而做了'comments + = ...',那么/ * * /样式注释不能正常工作---我不知道为什么。 – dennycrane 2010-11-21 03:24:25

+0

开箱即用:'comments = s1:/ *,mb:*,ex:* /,://,:#' – Johnsyweb 2010-11-21 03:25:51

0

尝试增加这你的vimrc:

let g:PHP_autoformatcomment=1 

我在Mac上,它似乎在默认情况下启用。功能完全如何陈述。