我不知道为什么,但是这个话题似乎记录不清,并且充满争议,因为没有人知道真正的答案(除了Moolenaar先生,他很少回答)。
所以基本上我已经提出了讨论 here ,它很快就死了,可能是因为在Windows上没有太多人在终端模式下使用Vim。
我的编码设置如下:
if has('multi_byte')
if empty(&termencoding)
let &termencoding = &encoding
endif
let &encoding = 'utf-8'
let &fileencoding = 'utf-8'
endif
当然,我在GVim下运行没有问题:可以输入任何字符,而我为Powerline修补Consolas
的工作正常。当我尝试在终端模式下运行Vim时,问题就出现了。我使用 ConEmu ,一个功能丰富的Windows终端模拟器。它声称正式支持Unicode开箱即用。例如,我可以运行以下测试脚本:
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中正确看到所有符号。是的,测试脚本打开65001代码页。我已经发现Vim根本无法使用65001代码页,所以这似乎不是一个选项。终端中的默认代码页是437,我也可以使用此默认代码页在ConEmu中键入类似俄语的内容,并且显示正确。
通过:h termencoding
阅读,我发现Windows默认使用Unicode来传递符号。然后,我不明白为什么当我在终端Vim中键入任何非ANSI时,我看到?
个符号?航空公司也不会显示来自已修补Consolas
的精美符号。如何在Windows上为终端Vim配置真正的Unicode?顺便说一下,&termencoding
也会报告437。
有人可以一劳永逸地向我解释是否支持Windows上的终端Vim(以及如何配置)?
答案 0 :(得分:21)
我自己也很想知道这件事,过去曾经尝试过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 7x64
.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中获得闪烁的光标,令人困惑。当事情搞砸时,仍然比以前更好。
答案 1 :(得分:1)
最近有一个patch for "Windows 8 IME in console Vim"。它被mattn清理并发布在这里: https://gist.github.com/mattn/8312677
它包含在7.4.142中。该版本是否可以解决您的问题?