什么会引起Vim中的奇怪字符?


13

使用NERD树插件,在Vim中我遇到了一个非常奇怪的问题,如您在图片中所见,其中的字符显示得非常奇怪。在有帽子的地方,〜V 3/4应该是|-。我已经将我的LANG设置为en_US,将LC_ALL设置为en_US(在Arch Linux中),并且正在使用Anonymous Pro字体,尽管切换字体没有区别。

真奇怪


它看起来像一个字符集问题。您的插件正在使用UTF-8字符集,而您的gvim可能正在使用latin1。很抱歉,目前没有更完整的解决方案。您可以尝试执行“ :set fenc=utf-8”,但这并不是真正的长期解决方案。
garyjohn

1
确实看起来像是字符编码问题。我的猜测是,数据包含├(方框图,光垂直和右,U + 251C),在UTF-8中为0xE2 0x94 0x9C。解释为ISO-8859-1,第一个字节为â,其他字节为控制代码。其余的内容晦涩难懂,但是强制将数据解释为UTF-8应该可以解决这个问题。
Jukka K. Korpela 2012年

好的,方框图很有道理,我一直以为那只是一个横线。Anonymous Pro具有方框图字符。
Tanner

@Tom Wijsman我不确定您对标题进行了哪些更改。您所做的编辑表明您已编辑标题,但没有任何更改。
Tanner

@Tanner:我添加了“可能导致的原因”和一个问号。
Tamara Wijsman'4

Answers:



6

我已经解决了问题。我为解决该问题所做的工作:

  • 编辑/etc/locale.genLC_ALL="en_US.UTF-8"而不是LC_ALL="en_US"
  • locale-gen以根身份跑
  • locale -a,这表明en_US.UTF-8; 然而,locale表现出LC_ALL仍被en_US,然后我记得我曾远销LC_ALL.bashrc昨晚试图解决这个问题,所以我改变了我LANG,并LC_ALLen_US.UTF-8
  • 重新加载终端,运行gvim,成功!奇怪的是,它现在使用的是三角形箭头字符,而不是框形箭头字符。让我认为它可能对ISO-8859使用方框,对于UTF-8使用三角形,这使我怀疑我在其他程序中可能会遇到问题。我会解决它。

1
这还不足以为我解决这个问题。我还不得不用multi_byte重新编译vim。现在工作正常。
chris.ritsen 2012年

我将检查今晚晚些时候是否用multi_byte编译了我的vim版本。
Tanner 2012年

LC_ALL="en_US.UTF-8对我来说足够了
Jakub M.

3

也许这不值得破解,但似乎对我有用。

我更改了以下行NERDTree.vim

call s:initVariable("g:NERDTreeDirArrows", s:running_windows) 

!s:running_windows之前)

现在我看不到任何花哨的+符号,但是至少从vim内部可以跳转目录。我正在使用solaris,但我认为我没有root访问权限。


1

我的更改是删除布尔求反(字符!)。这是一个git diff:

〜/ .vim / plugged / nerdtree / plugin] $ git diff NERD_tree.vim
差异--git a / plugin / NERD_tree.vim b / plugin / NERD_tree.vim
索引bbcc55f..6342b6c 100644
---一个/插件/NERD_tree.vim
+++ b / plugin / NERD_tree.vim
@@ -66,7 +66,7 @@呼叫s:initVariable(“ g:NERDTreeShowHidden”,0)
 呼叫s:initVariable(“ g:NERDTreeShowLineNumbers”,0)
 呼叫s:initVariable(“ g:NERDTreeSortDirs”,1)

-if!nerdtree#runningWindows()
+ if nerdtree#runningWindows()
     呼叫s:initVariable(“ g:NERDTreeDirArrowExpandable”,“ --junk1-here--”)
     呼叫s:initVariable(“ g:NERDTreeDirArrowCollapsible”,“ --junk2-here--”)
 其他

1

将值显式添加到.vimrc(vim config)中的下两个变量中,为我解决了这个问题:

let g:NERDTreeDirArrowExpandable = '▸'
let g:NERDTreeDirArrowCollapsible = '▾'

这些应该是默认值,但是由于某些原因,它们不是在ubuntu / vim上为我设置的。


1

如果您的vimrc正在更改guicursor,请尝试删除该行。其他可能导致/阻止这些变量的变量包括:

set guicursor=在vimrc
set t_Co=
export TERM=xterm-256color在shell 中的vimrc 中


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.