2

我一直在探索在 VIM 中自动将结束字符附加到一行代码的方法。就我而言,它是 CSS。我遇到了这个提示http://vim.wikia.com/wiki/Automatically_append_closing_characters并调整了它告诉我添加到我的.vimrc喜欢的代码

inoremap {      {}<Left>
inoremap {<CR>  {<CR>}<Esc>O
inoremap {{     {
inoremap {}     {} 

所以当我写

body 

然后快速按 { 和 ENTER 结果是什么

body {

}

请注意,光标将缩进并位于第 2 行,因此我将准备在该块中编写代码。

另外我应该提到我还在我的.vimrc

inoremap ::     :;<Left>   

这样当我快速连续键入 : 和 : 时,我会得到:;位于和之间的:光标;。这正是我想成为的地方,因此我可以立即开始编写代码。

我做得很好,但我很快意识到我安装的自动完成插件(AutoComplPop VIM 插件http://www.vim.org/scripts/script.php?script_id=1879)与上述.vimrc调整冲突。

例如,如果我开始写作,color我会得到所有选项的下拉自动完成下拉菜单。问题是选项color实际上是color:.

在此处输入图像描述

您会看到它已经添加了一个冒号,所以当我选择它时,冒号已经存在,然后我必须手动添加结束;字符。这基本上破坏了将自动附加结束字符代码添加到 my 的整个目的,.vimrc因为在这种情况下,它不会自动附加结束分号。

那么如何对 VIM 的 Omni Completion 进行自定义编辑,以便所有 CSS 属性不以冒号结尾?

VIM 的 CSS 自动完成选项,在这里遇到了 AutoComplPop http://www.vim.org/scripts/script.php?script_id=1879

4

1 回答 1

1

假设你在一个类 UNIX 系统上……</p>

  1. 复制

    /usr/share/vim/vim7x/autoload/csscomplete.vim
    

    ~/.vim/autoload/csscomplete.vim
    
  2. 找到生成属性列表的循环,对我来说它位于第 92 行。

  3. 从两个的第二个参数中删除冒号add()

    这些行:

    call add(res, m . ':')
    call add(res2, m . ':')
    

    变得:

    call add(res, m)
    call add(res2, m)
    
  4. 保存文件。


还有许多用于“自动关闭”字符对的插件。我使用DelimitMate

这个问题根本与 ACP 无关。

于 2012-08-30T15:43:44.647 回答