Macos 为mac终端启用vim语法中的斜体突出显示

Macos 为mac终端启用vim语法中的斜体突出显示,macos,vim,terminal,syntax-highlighting,italics,Macos,Vim,Terminal,Syntax Highlighting,Italics,我想让vim用斜体显示我的评论,我知道我需要 cterm=italic 字符m=斜体 在 hi Comment 嗨,评论 我正在使用的color.vim文件中的行。但是,这对文本显示没有影响,我怀疑这与一些Terminal.app设置有关,除非我误解了vim语法。如果有人能告诉我如何启用此功能,我将不胜感激 此外,我目前使用的是摩纳哥字体,它没有单独的斜体文件(但是,斜体语法突出显示也不适用于Console、Lucida、Bitstream Vera或其他支持斜体或斜体的字体)。假设有一个斜体字

我想让vim用斜体显示我的评论,我知道我需要

cterm=italic 字符m=斜体 在

hi Comment 嗨,评论 我正在使用的color.vim文件中的行。但是,这对文本显示没有影响,我怀疑这与一些Terminal.app设置有关,除非我误解了vim语法。如果有人能告诉我如何启用此功能,我将不胜感激

此外,我目前使用的是摩纳哥字体,它没有单独的斜体文件(但是,斜体语法突出显示也不适用于Console、Lucida、Bitstream Vera或其他支持斜体或斜体的字体)。假设有一个斜体字体的解决方案,我是否还需要跳过任何进一步的障碍才能工作

谢谢你的意见

编辑:

我很惊讶我还没有得到答案;这似乎不太难做到。也许是的。或者,有人能解释一下为什么这不可能吗?

Konrad,不知道Terminal.app,但italic在许多不同的终端模拟器中都受支持。
我想到了urxvt、konsole、gnome终端。

你不能使用常规的摩纳哥字体

似乎只有MacVim启用了斜体


从SnowLeopard开始,终端不支持斜体属性(SGR,值3)。请随时在提交请求


更新:macOS Sierra 10.12中的终端添加了斜体支持。请注意,该版本的ncurses附带的xterm terminfo文件没有声明italic
sitm
功能。请参阅Bahman Eslami的答案或cheon的答案中关于创建terminfo文件的vim特定解决方法,该文件声明iTerm2终端应用程序将使用
sitm
,现在正在夜间构建中。如增强请求中所述,您需要正确配置var。

在macOS Sierra 10.12中向终端添加了斜体支持(在询问此问题之后);但是,该版本的ncurses附带的xterm terminfo文件没有声明italic
sitm
功能。您可以通过创建一个本地terminfo文件来解决这个问题,该文件声明该功能并继承当前使用的terminfo文件

在以下说明中,使用
术语设置为的任何名称
xterm-256color
是终端内置默认配置文件使用的默认配置文件

创建名为
xterm-256color-italic.terminfo的文件:

# A xterm-256color based TERMINFO that adds the escape sequences for italic.
xterm-256color-italic|xterm with 256 colors and italic,
  sitm=\E[3m, ritm=\E[23m,
  use=xterm-256color,
在终端中运行
tic xterm-256-italic.terminfo
,它将生成一个文件
~/.terminfo/78/xterm-256color-italic
。当
TERM
设置为文件名时,ncurses将自动找到此文件

要为单个终端配置文件设置
TERM=xterm-256-italic

或者您可以将
/usr/share/terminfo/78/xterm-256color
替换为
~/.terminfo/78/xterm-256color-italic

sudo cp /usr/share/terminfo/78/xterm-256color /usr/share/terminfo/78/xterm-256color-bak
sudo cp ~/.terminfo/78/xterm-256-color-italic /usr/share/terminfo/78/xterm-256color
然后,您可以在vim中找到斜体字体:


从OS X Sierra 10.12开始,默认终端应用程序支持斜体字;但是,包含的ncurses版本包含不声明斜体支持的xterm terminfo文件(它们不定义
sitm
功能)。要在Vim中解决此问题,请将以下内容添加到vimrc文件中,以定义用于启用/禁用斜体的终端命令:

let &t_ZH="\e[3m"
let &t_ZR="\e[23m"
然后确保您使用的字体支持斜体,并且您的配色方案在某些语法部分包含斜体。或者,要在本地自定义语法突出显示以斜体格式显示注释,请将以下内容添加到vimrc文件中:

highlight Comment cterm=italic

在我的测试中,将
set background=
set background=dark
set background=light
添加到一个人的vimrc文件中就可以了!即使我使用的是默认预安装的xterm-256color terminfo,其中没有斜体信息!即使我在前面的答案中建议使用xterm-256color-italic,也没有其他方法有效

完整的解决方案,基于前面的答案:

let &t_ZH="\e[3m"
let &t_ZR="\e[23m"
highlight Comment cterm=italic
set background=dark " or set background=light or set background=

我不知道为什么会这样,我问了一个问题。

你说的“似乎”是什么意思?你能给我指个网址吗?Mac上有吗?Terminal.app和iTerm没有,或者可能是一个术语配置问题。试试看,这是一个很好的跨平台的替代品,可以替代用Java编写的Terminal.app。不过,不知道您是否可以让console vim显示斜体,而不仅仅是粗体或倒排文本,这是它在“我的盒子”上所做的。在创建此答案时,终端不支持斜体文本。从macOS Sierra 10.12开始,它就是这样。此外,该版本的ncurses附带的xterm terminfo文件没有声明italic
sitm
功能。请参阅Bahman Eslami回答中的解决方法:如果您想将此行为限制到特定的配置文件,则使用配置文件的“运行命令:”设置很有帮助,但我建议根据
TERM
是否设置为
xterm-256color
,有条件地使用标准shell登录或rc文件来执行此操作,例如。,xterm-256color中的“$TERM”大小写)TERM=xterm-256color-italic;;esac
我不会对非标准的
术语
声明,比如
xterm-256-italic
。。。你迟早会体验到它的破碎。我认为macOS Big Sur再次打破了斜体。好。