我正在用gvim编写HTML,但令我恼火的是,omni-complete总是会删除我之前的单词,甚至是我之前选择的单词。
例如,假设我正在编写以下代码**('_'表示光标,此后)**:
<a style="_" ></a>
按下^ X- ^ O后,它会弹出提示列表,然后选择“color:”
<a style="color:_" >
我再次按^ X- ^ O,它会弹出正确的提示(“rgb(”,“#”),但同时会删除前一个单词,如下所示:
<a style="rgb(_" >
有人能给我一些帮助吗?非常感谢。这是我的gvimrc:
set guifont=文泉驿等宽微米黑\ 14
colorscheme neverness_modified
set number
set guioptions-=T
winpos 0 0
set columns=1000
set lines=1000
set fileencodings=utf-8,gb18030
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
filetype on
filetype indent on
syntax on
set cindent
set completeopt+=longest
function Maximize_Window()
silent !wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
endfunction
" ========================
" TagList
" ========================
set tags+=/home/fish47/.vim/tags/STL.tags
" ========================
" TagList
" ========================
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
" ========================
" WinManager
" ========================
let g:winManagerWindowLayout='FileExplorer|TagList'
WMToggle
" ========================
" OmniCppComplete
" ========================
set nocp
filetype plugin on
let OmniCpp_SelectFirstItem=2
let OmniCpp_MayCompleteDot=1
let OmniCpp_MayCompleteArrow=1
let OmniCpp_MayCompleteScope=1
set showcmd
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
答案 0 :(得分:0)
这是htmlcomplete.vim
脚本中的错误。您可以通过在属性和值之间插入<Space>
来解决此问题,正如romainl指出的那样。
请向剧本作者Mikolaj Machowski提交错误报告(基本上是此页面的链接);他的电子邮件地址在脚本的标题中;该脚本位于Vim安装目录中的autoload/htmlcomplete.vim
。
由于最后一次更改是从2011年4月开始,作者仍然很有可能继续维护它。如果您没有得到回复,请通知vim_dev邮件列表(cp。http://www.vim.org/community.php;您需要先注册)关于此;希望有人会接受它。
答案 1 :(得分:0)
这是一个错误,并且是vim较新版本的回归。该csscomplete.vim插件是为较早版本编写的,而您使用的是较新版本,则会出现意外的回归。
如果您对插件进行了黑客攻击,则会看到删除的发生,因为它将反向移动光标以寻找最明显的上下文,并且反向光标的移动被vim解释为擦除。
对我来说,错误在于以下几行:
...
let compl_begin = col('.') - 2
while start >= 0 && line[start - 1] =~ '\%(\k\|-\)'
let start -= 1
endwhile
所以,这是您的问题:名为start
的变量通过omnifunc传递回vim,而vim则将现有文本保留为原样,但是较新的版本将该动作解释为擦除。
因此,更改第二个while子句条件以声明连字符,现在您可以开始比赛了。但这暴露了一个新问题,因为csscomplete.vim陷入困境,键入字母并启动omnifunc会变慢。但是,嘿,一次出现一个问题。
这就像购买将方向盘安装在车顶上的汽车一样。就像是行不通的家伙。但这是Vim,如果您不属于低级黑客,那么您来的是错误的机器商店。