当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 气泡提示框里中文乱码
帖子发表于 : 2010-12-07 11:07 

注册: 2009-02-23 15:52
帖子: 40
送出感谢: 5
接收感谢: 0 次
见附件,气泡提示框中汉字是乱码,我的是在windows下,别的地方没有乱码。

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


附件:
未命名.JPG
未命名.JPG [ 98.87 KiB | 被浏览 511 次 ]



最后由 lh-n 编辑于 2010-12-07 11:27,总共编辑了 1 次
页首
 用户资料  
 
2 楼 
 文章标题 : Re: 气泡提示框里中文乱码
帖子发表于 : 2010-12-07 11:10 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
附啥了
没气泡的。那是win


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 气泡提示框里中文乱码
帖子发表于 : 2010-12-07 11:28 

注册: 2009-02-23 15:52
帖子: 40
送出感谢: 5
接收感谢: 0 次
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


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 气泡提示框里中文乱码
帖子发表于 : 2010-12-07 11:36 
头像

注册: 2009-04-11 23:46
帖子: 4162
系统: Arch Linux
送出感谢: 11
接收感谢: 127
又是 Windows。。。。自己 :h :lang 研究吧。

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


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧 害人的 X-Y 问题
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 气泡提示框里中文乱码
帖子发表于 : 2010-12-07 11:36 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
这气泡哦。
你的源码,是啥编码的。
或者函数中转码。找找转码的例子。


_________________
● 鸣学


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 气泡提示框里中文乱码
帖子发表于 : 2010-12-07 11:39 
头像

注册: 2007-02-02 18:14
帖子: 30702
系统: debian sid
送出感谢: 1
接收感谢: 34
vim认识绯utf8编码,那个气泡不认识啊


_________________
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 气泡提示框里中文乱码
帖子发表于 : 2010-12-07 18:35 

注册: 2009-02-23 15:52
帖子: 40
送出感谢: 5
接收感谢: 0 次
回复上面几楼:
我的编码是cp939,但是我把文件转换为utf-8后还是乱码。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 气泡提示框里中文乱码
帖子发表于 : 2010-12-08 14:15 
头像

注册: 2009-03-13 20:31
帖子: 337
地址: cnblogs.com/open_source
送出感谢: 2
接收感谢: 0 次
你转换编码后有没有保存,有没有重新生成tags,最重要的是,你用的什么插件,分享下。 :em09


_________________
代码:
'(("OS" . "Fedora")
  ("editor" . "Emacs"))
  ("blog" . "http://www.cnblogs.com/open_source")


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 气泡提示框里中文乱码
帖子发表于 : 2011-01-10 22:33 

注册: 2009-02-23 15:52
帖子: 40
送出感谢: 5
接收感谢: 0 次
问题终于解决了,getline得到了汉字是utf-8编码的,可视气泡只认识cp936

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

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


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 气泡提示框里中文乱码
帖子发表于 : 2011-01-10 22:39 

注册: 2009-02-23 15:52
帖子: 40
送出感谢: 5
接收感谢: 0 次
谢谢楼上几位。


呼文彪 写道:
你转换编码后有没有保存,有没有重新生成tags,最重要的是,你用的什么插件,分享下。 :em09


这个气泡的实现没用用插件,只是从利用上面3楼的FoldSpellBalloon()函数赋值给balloonexpr就行了。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译