分页: 1 / 1

气泡提示框里中文乱码

发表于 : 2010-12-07 11:07
lh-n
见附件,气泡提示框中汉字是乱码,我的是在windows下,别的地方没有乱码。

我还想知道,可否用光标触发弹出气泡,而不用鼠标。还有,如何触发弹出菜单(Pmenu)来显示list,如图中的。

Re: 气泡提示框里中文乱码

发表于 : 2010-12-07 11:10
eexpress
附啥了
没气泡的。那是win

Re: 气泡提示框里中文乱码

发表于 : 2010-12-07 11:28
lh-n
eexpress 写了:附啥了
没气泡的。那是win
抱歉,忘贴附件了。有这个set balloonexpr= ,下面是我从网上复制修改的,就是图上的效果

代码: 全选

map <leader>sp :set spell!<CR>
function! FoldSpellBalloon()
	let foldStart = foldclosed(v:beval_lnum )
	let foldEnd   = foldclosedend(v:beval_lnum)
	let lines = []
	" Detect if we are in a fold
	if foldStart < 0
		" Detect if we are on a misspelled word
		let lines = spellsuggest( spellbadword(v:beval_text)[ 0 ], 5, 0 )
	else
		" we are in a fold
		let numLines = foldEnd - foldStart + 1
		" if we have too many lines in fold, show only the first 12
		" and the last 12 lines
		if ( numLines > 25 )
			let lines = getline( foldStart, foldStart + 12 )
			let lines += [ '-- Snipped ' . ( numLines - 24 ) . ' lines --' ]
			let lines += getline( foldEnd - 12, foldEnd )
		else
			"less than 25 lines, lets show all of them
			let lines = getline( foldStart, foldEnd )
		endif
	endif
	" return result
	return join( lines, has( "balloon_multiline" ) ? "\n" : " " )
endfunction

set balloonexpr=FoldSpellBalloon()
set ballooneval
set balloondelay=100

Re: 气泡提示框里中文乱码

发表于 : 2010-12-07 11:36
lilydjwg
又是 Windows。。。。自己 :h :lang 研究吧。

光标不行吧,除非改源码。

Re: 气泡提示框里中文乱码

发表于 : 2010-12-07 11:36
eexpress
这气泡哦。
你的源码,是啥编码的。
或者函数中转码。找找转码的例子。

Re: 气泡提示框里中文乱码

发表于 : 2010-12-07 11:39
leeaman
vim认识绯utf8编码,那个气泡不认识啊

Re: 气泡提示框里中文乱码

发表于 : 2010-12-07 18:35
lh-n
回复上面几楼:
我的编码是cp939,但是我把文件转换为utf-8后还是乱码。

Re: 气泡提示框里中文乱码

发表于 : 2010-12-08 14:15
呼文彪
你转换编码后有没有保存,有没有重新生成tags,最重要的是,你用的什么插件,分享下。 :em09

Re: 气泡提示框里中文乱码

发表于 : 2011-01-10 22:33
lh-n
问题终于解决了,getline得到了汉字是utf-8编码的,可视气泡只认识cp936

将最后得到的字符串用 iconv()转换一下就可以了。

代码: 全选

	let utf8 = join( lines, has( "balloon_multiline" ) ? "\n" : " " )
	return iconv(utf8, "utf-8", "cp936")

Re: 气泡提示框里中文乱码

发表于 : 2011-01-10 22:39
lh-n
谢谢楼上几位。

呼文彪 写了:你转换编码后有没有保存,有没有重新生成tags,最重要的是,你用的什么插件,分享下。 :em09
这个气泡的实现没用用插件,只是从利用上面3楼的FoldSpellBalloon()函数赋值给balloonexpr就行了。