最近博友在本博问了很多Vim相关的问题,我已经渐渐感觉到仅凭我一个人即使对vim再怎么精通都是无法回答这所有的问题的,所以在这里把问题列出来,希望知道的朋友能够帮忙解答。
对于这种博友互助,我也在考虑有没有更好的方式,如果大家有什么好的建议或意见都可以跟我提出来,我们一起想更好的方法。

1.By 七彩映像丶
在使用vimwiki的时候遇到一个问题,再次请教你一下.
在新建事项:

生成HTML文件时会自动加上checkbox,却不会显示该事项的进度,虽然我设置了let g:vimwiki_listsyms=”01234″,问题依旧存在.
我想生成如org-mode效果:

应该怎么设置呢?还是vimwiki不支持该方式生成事项进度?
A:作者自己找到了解决方案,并与大家分享(赞一个!)
/vimfiles/autoload/vimwiki_html.vim LINE:751
修改为

2.By zsyong2008
minibufexpl配合nerd_tree打开文件(深度不一样)后,minibufexpl产生一个文件列表tab,如果用:bd删除某一个缓冲区后,再用:bn切换到下一缓冲区,常常会出现第二条文件列表tab…如此下去,,会有第三条,,第四条。。。。窗口极其的混乱,,深感烦恼,,请博主提供些解决方案。。。

3.By zsyong2008
如果在状态栏上输出共有几个缓冲区及当前缓冲区的文件路径( 虽然在标题栏上有,但不习惯看那),而且有点不喜欢分割窗口,也懒得打:ls等命令,本人基础没打好,,还请博主帮忙。。或者提供一个更好解决方案。。谢谢
A:感谢依云的回答
%{last_buffer_nr()}
在statusline设置上即可。

Vim(gVim)对排序的妙用

前段时间有博友在群里问了一个关于vim排序的问题,因为时间问题一直没帮忙解决,今天时间正好空出来,就帮忙搞了一下。 原文的问题如下: ...

阅读全文

vim(gVim)统计字节、字符数

前段时间在做文件扫描的时候,有一些关于字节、字符数统计的需求,考虑到有同学也可能用的到,所以整理一下记录在这里。 1.统计当前字符之前的所有字节数 ...

阅读全文

糗事百科网站改版,对应qiushibaike.vim插件升级

前不久糗百改版,所以原有的qiushibaike.vim插件用起来会有一些问题,今天有时间就修改了一下. 如图: 下载地址: http://www.vim.org/scripts/script.php?scr...

阅读全文

36则回应给“博友问的一些问题的整理(1)”

  1. Jeffrey4l说道:

    我也遇到问题2,同求解决办法。

    [回复]

  2. 依云说道:

    问题3:
    :h last_buffer_nr()
    :h ‘stl’

    如果不喜欢打 :ls,可尝试下 bufexplorer 插件。

    [回复]

    Dante 回复:

    太佩服依云对vim的熟悉啦,那我就帮忙把依云没有说完的话说出来吧:
    %{last_buffer_nr()}
    在statusline设置上即可。

    [回复]

    依云 回复:

    呃,我只是 :h 了下而已。Vim 的文档系统很强大。我看到这个,只是想到了缓冲区号而已,于是 :h bufnr 就找到了 :-)

    PS: 文档上说 last_buffer_nr 已经废弃。并且,这样会把已经 :bwipeout 掉的缓冲区也算在内。

    [回复]

    sw 回复:

    额,那个啥,文档里面不是说了bufnr(‘$’)么……

    [回复]

    zsyong2008 回复:

    看到博主和各位朋友热情帮忙,,小弟我真是感激涕零。。。。

    试了下,last_buffer_nr()取得最新使用的缓冲区的编号,假如,我在使用过程中,,:bd 掉的任何一个或者几个,,这个编号不会变。。。。

    也许可以从列出的缓冲区(:ls)列表,,写一个函数进行实时统计当前开出的缓冲区总数(:bd掉的就没有了),不知道这个想法可行否。。

    小弟的情况是这样的,,如果不使用minibufpl跟分割窗口的话,,在打开多个文件后,,其实对其中开了几个缓冲区和开了哪些缓冲区没个底。。。。如果用minibufpl的话,就出现问题2.。。。其实小弟真正的目的就是想让各位大哥哥们在不忙的时候对问题2交流一下想法或者提供个解决方案,小弟谢谢了。。

    [回复]

    sw 回复:

    对这个不是很明白的说,:bd以后不是当前窗口就关了么,如果屏幕上面只有buffer窗口,nerd_tree窗口和minibufexpl窗口的话,现在就应该只剩下nerd_tree窗口和minibufexpl窗口了啊,如果这个时候:bn的话,nerd_tree会被替换掉的吧?

    你的意思是不是在nerd_tree不停地go会导致minibufexpl上的条条越来越多?

    [回复]

    zsyong2008 回复:

    是这样的,我用nerd_tree打开文件后,就把nerd_tree 的窗口给隐藏了,,剩下的是minibufpl跟编辑文件的缓冲区了,,光标就会落在文件缓冲区上,,那用:bd,接着:bn就产生问题了。。关键一点:打开同一个文件夹(深度一样的)的文件再执行上面的操作却没有这个问题。。。

    还有一些个人经验就是:用nerd_tree打开文件,minibufpl也会产生多条tab,设置了
    let g:miniBufExplorerMoreThanOne=0
    就没有这问题了。。。

    [回复]

    sw 回复:

    恕我愚昧……我还是没发现问题………………

    假设我有个文件e:\log.txt
    有个文件 e:\work\test.txt

    怎么操作才会出现问题呢?

    [回复]

    zsyong2008 回复:

    e:/work/index.php
    e:/work/action/admin.class.php
    e:/work/tpl/index.html

    如果这三个都打开了,,minibufpl里就有三个,然后:bd掉一个深路径的(出现问题2概率高),或者在这之后再用:bn,,一般情况,:bd步骤没问题的话在这个:bn问题就来了。。。

    打开不同目录的文件越多,越能看出问题。。。

    很抱歉,,当时陈述问题的时候,,没能全面的描述。。。

    [回复]

    sw 回复:

    我还是没发现问题。步骤如下:
    1. :NERDTree 打开nerd-tree
    2. 选择 work\index.php, 使用go打开
    3. 同2,打开剩下两个文件。
    4. 使用:q关掉NERDTree
    5. 使用:bd关掉当前文件(是work\tpl\index)这一步没有任何异常。
    6. 使用:bn切换下个缓冲区。这一步还是没有任何异常。
    我用的版本是gVim7.3-87,大型图形版本,带python,python3,perl,ruby,lua,scheme。

    [回复]

    zsyong2008 回复:

    还麻烦朋友您帮我再试一下,,再建多几层文件夹,,每个文件夹建立多几个文件,然后全部文件都打开,,,再用:bd,删除一些,然后再用:bn。。。随机进行:bn,:bd操作,,操作多几次,,应该问题就来了。。

    我的环境:gvim73,,Python27,nerd_tree,nimibufpl,tlist.主要就这些吧,,而且上面的这个问题不光是我出现,,上面的一位朋友也说有。。所以并不特殊。。。。

    [回复]

    sw 回复:

    恩,我试试看。

    [回复]

    sw 回复:

    额= =等等,我想起来了,我用的是minibufexplpp……不是minibufexpl………………不知道会不会是这个原因……

    [回复]

    zsyong2008 回复:

    我用的这个minibufexpl.vim。。vim.org没发现你的用的那个minibufexplpp。。

    [回复]

    zsyong2008 回复:

    找到了minibufexplpp。。用了下,,发现问题还是存在。。我们私下沟通下可以吗?

    zsyong2008@126.com

    [回复]

    依云 回复:

    那个,想得到实际的缓冲区个数的话,可以利用 BufAdd 和 BufDelete 事件来自己计数的。

    [回复]

    zsyong2008 回复:

    按照依云兄提供的思路,改了下statusline这个插件,基本达到自己的需求了。。非常感谢各位朋友的帮忙。。

    [回复]

  3. 七彩映像丶说道:

    谢谢Dante了,我的问题修改了vimwiki的源代码已经解决了,麻烦了..

    [回复]

    Dante 回复:

    欢迎和大家分享,;)

    [回复]

  4. 七彩映像丶说道:

    /vimfiles/autoload/vimwiki_html.vim LINE:751
    修改为
    function! s:add_checkbox(line, rx_list, st_tag, en_tag) “{{{
    let st_tag = a:st_tag
    let en_tag = a:en_tag

    let chk = matchlist(a:line, a:rx_list)
    if len(chk) > 0
    if chk[1] == g:vimwiki_listsyms[4]
    let st_tag .= ‘[4]‘
    let en_tag = ‘
    ‘.a:en_tag
    elseif chk[1] == g:vimwiki_listsyms[0]
    let st_tag .= ‘[0]‘
    elseif chk[1] == g:vimwiki_listsyms[3]
    let st_tag .= ‘[3]‘
    elseif chk[1] == g:vimwiki_listsyms[2]
    let st_tag .= ‘[2]‘
    else
    let st_tag .= ‘[1]‘
    endif
    endif
    return [st_tag, en_tag]
    endfunction “}}}

    我改为0-4代码进度,百分号不容易对齐,呵呵

    [回复]

    Dante 回复:

    已经帮你加到文章中啦~~ 能够自己摸索出答案的人都是有探索精神的人,呵呵~~

    [回复]

  5. 七彩映像丶说道:

    回复html标签转义了
    let st_tag .= ‘[4]‘
    let en_tag = ‘
    ‘.a:en_tag

    [回复]

    七彩映像丶 回复:

    let st_tag .= ‘<del>[4]‘
    let en_tag = ‘</del>’.a:en_tag

    这条留言可以删除了.:)

    [回复]

    Dante 回复:

    哈,已经更改~

    [回复]

    梧桐 回复:

    实际上回复时候加一个code标签就不会被转义了。。我每次都是这么做的

    [回复]

    梧桐 回复:

    上面我那条删了吧,标签根本没用。。<悲剧>

    [回复]

  6. bronze casting说道:

    这些都是博友的问题啊,是不是全部在了

    [回复]

  7. 铁骑说道:

    请问下博主的代码语法高亮插件用的是哪个啊?

    [回复]

    Dante 回复:

    wp_syntax

    [回复]

  8. Joanna Wall说道:

    找到了minibufexplpp。。用了下,,发现问题还是存在。。我们私下沟通下可以吗? zsyong2008@126.com

    [回复]

  9. impact wrench说道:

    问题还不少啊……

    [回复]

  10. pwq说道:

    可以问您个问题吗?
    我的一个HTML文档内有多种文字,简繁中、日文、韩文,在网上搜索了不少办法,可编码配置还是一直搞不好,有乱码。能帮帮不。

    [回复]

    Dante 回复:

    如果是这种多语言的话,建议试一下Fencview这个插件,应该能满足你的需求。

    [回复]

    pwq 回复:

    谢谢,我试了下,没有效果,但还是感谢您的回复。支持一下。呵呵。

    [回复]

  11. fanhe说道:

    问题2困扰我一段时间了,没有好的办法,我个人是map了一个键,先切换至左边一个缓冲,然后删除原来的。vim的buffer管理本来就容易出现插件间兼容性问题,没办法。

    [回复]

发表评论