【问题标题】:Vim 7.4+ highlighting italics in black on macOSVim 7.4+ 在 macOS 上以黑色突出显示斜体
【发布时间】:2018-02-16 09:33:37
【问题描述】:

在 macOS Sierra 上,Terminal.app 和 iTerm2 中的 Vi(m) 7.4+ 以黑色突出强调和斜体标记。这包括 Markdown 文件中的 *example* 和 TeX 文件中的 \emph{example}

GUI MacVim 正确地使该文本变为斜体。

即使从 Terminal.app 运行准系统 command vi -u NONE test.md +"syntax on"(其中 test.md 包含 *example*),仍然会出现此错误。

充其量,我想让 iTerm2 识别该文本并将其变为斜体。在最坏的情况下,我想至少停止用黑色突出显示文本。

【问题讨论】:

    标签: macos vim terminal syntax-highlighting iterm2


    【解决方案1】:

    阅读 vim 的源代码表明它可以做斜体。

    解决这个问题的方法是正确的终端描述。斜体是 4-5 年前才流行起来的,而 MacOS 的 ncurses 终端数据库副本比这要古老得多。

    ncurses 邮件列表中有一些recent discussion of iTerm2,结果更新了终端描述:

    #   Reconstructed via infocmp from file: /usr/local/ncurses/share/terminfo/i/iterm2
    iTerm2.app|iterm2|terminal emulator for Mac OS X,
        am, bce, hs, mir, msgr, npc, xenl, xon,
        colors#0x100, cols#80, it#8, lines#24, pairs#0x7fff, wsl#50,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink@, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J,
        cnorm=\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr,
        cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
        cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
        cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
        dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, dsl=\E]2;\007, ed=\E[J,
        el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
        flash=\E[?5h$<200/>\E[?5l, fsl=^G, home=\E[H,
        hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
        il=\E[%p1%dL, il1=\E[L, ind=\n, kEND=\E[1;2F, kHOM=\E[1;2H,
        kLFT=\E[1;2D, kRIT=\E[1;2C, ka1@, ka3@, kb2@, kbs=^?, kc1@, kc3@,
        kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        kdch1=\E[3~, kend=\EOF, kent@, kf1=\EOP, kf10=\E[21~,
        kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P, kf14=\E[1;2Q,
        kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~, kf18=\E[17;2~,
        kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~,
        kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~, kf3=\EOR,
        kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
        kf9=\E[20~, khome=\EOH, kind=\E[1;2B, knp=\E[6~, kpp=\E[5~,
        kri=\E[1;2A, op=\E[0m, rc=\E8, rev=\E[7m, ri=\EM,
        ritm=\E[23m, rmacs=^O, rmam=\E[?7l,
        rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>,
        rmso=\E[m, rmul=\E[m,
        rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
        setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
        setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, sitm=\E[3m, smacs=^N, smam=\E[?7h,
        smcup=\E7\E[?47h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
        smul=\E[4m, tbc=\E[3g, tsl=\E]2;, u6=\E[%i%d;%dR, u7=\E[6n,
        u8=\E[?1;2c, u9=\E[c, vpa=\E[%i%p1%dd,
    

    要使用它,您可以将它保存到一个文件中,然后运行 ​​tic 来编译它(当然,将 TERM 设置为 iterm2 )。 iTerm2 默认错误地将TERM 设置为“xterm”,但这是不正确的。

    【讨论】:

    • 这行得通,谢谢。我想要一个更优雅的解决方案,但你建议责任在于 Apple。
    • 是的 - 如果你有一些附加组件,例如 MacPorts,那似乎会得到更频繁的更新(但快速检查显示最新版本是几周前的......)
    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 2015-08-27
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 2013-07-17
    相关资源
    最近更新 更多