我不知道为什么,但是这个话题似乎被logging得很差,而且有争议,因为没有人知道真正的答案(除了也许很less有人回答的穆勒纳尔先生之外)。
所以基本上我在这里提出了一个讨论,并且很快就死了,可能是因为在Windows上没有太多人在terminal模式下使用Vim。
我的编码设置如下所示:
if has('multi_byte') if empty(&termencoding) let &termencoding = &encoding endif let &encoding = 'utf-8' let &fileencoding = 'utf-8' endif
当然,我在GVim下运行也没有问题:可以input任何字符,我修补的Powerline的Consolas
工作得很好。 当我尝试在terminal模式下运行Vim时,问题就开始了。 我使用ConEmu ,一个function丰富的Windowsterminal模拟器。 它声称正式支持Unicode的开箱即用。 例如,我可以运行以下testing脚本:
chcp 65001 & (cmd /c type "%~dpn0.cmd") & pause & goto :EOF English: texts, web pages and documents Graves,etc: à á â ã ä å æ ç è é ê ë ì í î ï Greek: ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Arabic: ڠ ڡ ڢ ڣ ڤ ڥ ڦ ڧ ڨ ک ڪ ګ ڬ ڭ ڮ گ Full width: @ A B C D E F G H I J K L M N O Romanian: texte, pagini Web şi a documentelor Vietnamese: văn bản, các trang web và các tài liệu Russian: тексты, веб-страницы и документы Japanese: テキスト、Webページや文書Yiddish: טעקסץ, וועב זייַטלעך און דאָקומענטן Hindi: पाठ, वेब पृष्ठों और दस्तावेज Thai: ข้อความ หน้า เว็บ และ เอกสาร Korean: 텍스트, 웹 페이지 및 문서 Chinese: 文本,網頁和文件
我可以在ConEmu中正确地看到所有的符号。 是的,testing脚本打开65001代码页。 我已经发现Vim无法使用65001代码页,所以这似乎不是一个选项。 在terminal的默认代码页是437,我也可以用Conemu在这个默认代码页中input类似俄文的东西,并且显示正确。
通过阅读:h termencoding
,我发现Windows默认使用Unicode来传递符号。 那么,我不明白为什么当我在terminalVim中input任何非ANSI的东西时,我看到了?
符号? 航空公司也没有显示来自补丁Consolas
奇特符号。 如何在Windows上为terminalVimconfiguration真正的Unicode? 顺便说一下, &termencoding
报告也是437。
请有人,一劳永逸,向我解释是否支持WindowsterminalVim的Unicode支持(以及如何configuration)?
我自己也想知道这个,过去曾经尝试过ConEmu,但为了获得256色的控制台vim和花哨的字体而苦苦挣扎。
所以今天我又试了一次,惊喜,惊喜 – 事情似乎在奏效。 鉴于对版本的所有极端敏感,我将尝试列出所有的版本
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 1 2014 09:38:34) MS-Windows 32-bit console version Included patches: 1-389 Compiled by raghuramanr@ADITI
ConEmu
140723 Alpha
Windows:Win 7×64
.vimrc中的ConEmu设置:
" ConEmu if !empty($CONEMUBUILD) echom "Running in conemu" set termencoding=utf8 set term=xterm set t_Co=256 let &t_AB="\e[48;5;%dm" let &t_AF="\e[38;5;%dm" " termcap codes for cursor shape changes on entry and exit to " /from insert mode " doesn't work "let &t_ti="\e[1 q" "let &t_SI="\e[5 q" "let &t_EI="\e[1 q" "let &t_te="\e[0 q" endif
脚步:
chcp 65001 vim.exe
在vim中,我仍然无法获得一个闪烁的光标。 还是比以前更好的东西会搞砸了。
最近有一个针对“Vim console中的Windows 8 IME”的补丁 。 它被清理了mattn并张贴在这里: https ://gist.github.com/mattn/8312677
它包含在7.4.142中。 这个版本是否解决了你的问题?