加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Vim:Windows下的终端编码(Unicode)

发布时间:2020-12-15 19:11:17 所属栏目:安全 来源:网络整理
导读:我不知道为什么,但是这个话题似乎被记录在案,并且被争议所涵盖,因为没有人知道真正的答案(除了莫奥莱纳尔先生,也很少回答)。 所以基本上我提出了一个讨论here,它很快死了,可能是因为没有太多的人在Windows的终端模式下使用Vim。 我的编码设置如下所示
我不知道为什么,但是这个话题似乎被记录在案,并且被争议所涵盖,因为没有人知道真正的答案(除了莫奥莱纳尔先生,也很少回答)。

所以基本上我提出了一个讨论here,它很快死了,可能是因为没有太多的人在Windows的终端模式下使用Vim。

我的编码设置如下所示:

if has('multi_byte')
  if empty(&termencoding)
    let &termencoding = &encoding
  endif
  let &encoding     = 'utf-8'
  let &fileencoding = 'utf-8'
endif

当然,我没有运行在GVim下的问题:可以输入任何字符,我修补的Consolas for Powerline工作正常。当我尝试在终端模式下运行Vim时,问题开始。我使用ConEmu,一个功能丰富的终端模拟器Windows。它声称正式支持Unicode开箱即用。例如,我可以运行以下测试脚本:

chcp 65001 & (cmd /c type "%~dpn0.cmd") & pause & goto :EOF

English:     texts,web pages and documents
Graves,etc:  à á a ? ? ? ? ? è é ê ? ì í ? ?
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的Unicode支持(以及如何配置)?

我也想过这个我自己也是,过去尝试了ConEmu,并在努力获得256色和控制面板上的迷人字体后,放弃了。

所以今天我再试一次,惊喜,惊喜 – 事情似乎正在起作用。鉴于对版本的所有极端敏感性,我将尝试列出所有内容的版本

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中得到一个闪烁的光标,这是令人困惑的。比以前更好的东西会被搞砸了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读