如何修复航空公司插件中的状态栏符号?


64

我安装了Airline插件以具有自定义状态栏,如下图所示:

在此处输入图片说明

然而,我的状态栏呈现符号<>><。我该如何解决这个问题?

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明


使用everythingfonts.com/otf-to-ttf将字体转换为ttf,例如:旧的XShell版本不支持otf。
bhathiya-perera

为了获得最大的兼容性,我放弃airline_powerline_fonts了。我认为它们真的没那么有用。
qwr

Answers:


50

其实我不明白为什么您的问题被否决了。老实说,起初我也不明白要获得这个漂亮的工具栏需要做什么。是的,我知道自述文件和其他内容,但是我认为帮助文件中应该包含“ getting started或” minimum settings部分。

无论如何,这里是设置。

安装适当的字体

您需要将带有分支,大三角形等符号的字体安装到系统中。它们不是标准符号,因此需要安装修补字体。您可以在此处找到很多修补字体:https : //github.com/powerline/fonts

.vimrc 设定

:help airline-customization此处,将此代码放入您的.vimrc文件:

" air-line
let g:airline_powerline_fonts = 1

if !exists('g:airline_symbols')
    let g:airline_symbols = {}
endif

" unicode symbols
let g:airline_left_sep = '»'
let g:airline_left_sep = '▶'
let g:airline_right_sep = '«'
let g:airline_right_sep = '◀'
let g:airline_symbols.linenr = '␊'
let g:airline_symbols.linenr = '␤'
let g:airline_symbols.linenr = '¶'
let g:airline_symbols.branch = '⎇'
let g:airline_symbols.paste = 'ρ'
let g:airline_symbols.paste = 'Þ'
let g:airline_symbols.paste = '∥'
let g:airline_symbols.whitespace = 'Ξ'

" airline symbols
let g:airline_left_sep = ''
let g:airline_left_alt_sep = ''
let g:airline_right_sep = ''
let g:airline_right_alt_sep = ''
let g:airline_symbols.branch = ''
let g:airline_symbols.readonly = ''
let g:airline_symbols.linenr = ''

unicode symbols如果您已经有修补的字体,则此处不需要此部分,但是如果您尝试使用没有适当符号的其他字体,则本节为您提供了很好的备用。

字型设定

如果在终端中使用Vim,则应在终端的配置文件首选项中切换到适当的字体。

如果您使用的是Vim的gui版本(MacVim,GVim),则需要在中设置字体.vimrc,例如:set guifont=DejaVu\ Sans:s12。您可以在此处找到更多信息:help guifont


你好,亚历山大。我按照他的指示进行操作,但仍然无法获得预期的结果:首先从电力线的站点安装了字体。然后,我在.vimrc文件中进行了设置。我的.vimrc文件已在gist.github.com/geisonsn/641f13543b8b41fe2c12中共享。我正在使用Vundle Manager插件。
盖森·桑托斯

您是否在编辑器中安装了该字体?如果在终端中使用vim,则应在终端中安装该字体,或者如果使用vim的gui版本(MacVim,GVim),则需要在.vimrc-file中设置字体,例如:set guifont=DejaVu\ Sans:s12。您可以在此处找到更多信息:help guifont
亚历山大·米肖夫

2
@AlexanderMyshov,您有重复的配置行,其中每两个仅需要第二个。
Vitor

1
刚刚在vi.stackexchange上创建了一个帐户,以感谢您并赞成您的这个很好的答案。感谢您使我获得数千次搜索。
0decimal0

1
我认为应该有一个“入门”或“最低设置”部分 ……我不知道它是否会被删除,但我已根据我的回答在《虚拟航空公司》维基上添加了《虚拟人指南》
icc97

12

自述文件

与电力线字体集成

为了使电源线符号看起来不错,您需要安装一个修补字体。可以在电力线官方文档中找到说明。可以在电力线字体库中找到预修补的字体。

最后,您可以在let g:airline_powerline_fonts = 1vimrc中添加便捷变量,该变量将自动g:airline_symbols用电力线符号填充字典。


1
我发现这let g:airline_powerline_fonts = 1还不够。由于某种原因,这仍然没有自动填充g:airline_symbols,因此我不得不根据Alexander Myshov的答案手动填充字典。
icc97

5

这花了几个小时才能弄清楚,因此这里有更多关于Fedora / Ubuntu的虚拟指南,其中有Windows的特殊部分。

首先是弄清楚在vim-航空公司状态栏中出现的那些奇怪但不错的尖括号是什么。背景是,airline是powerline的纯vim版本(它是python),而powerline使用UTF-8字符插入那些尖括号。因此,vim-airline仅使用相同的UTF-8字符。

然后,即使您确实安装了一个,它们也会看起来比您希望的更丑陋,因为字体不能完全正常工作。

配置Vim

这与官方说明相反,但是最后我有一点错误,这使我对所有字体安装都提出了疑问。因此,我建议您先进行配置,然后再使字体工作,它应该会神奇地出现。

最后的诀窍是迫使vim-airline使用所需的字体。在官方文档中,它应该只是添加let g:airline_powerline_fonts = 1到您的中.vimrc。但是我做到了,没有运气。中有更多信息:help airline-customization,以防万一,您可以根据需要提供一些简单的配置设置。这是我需要的最后的魔术酱。我不知道为什么它不是自动创建的。复制并粘贴Alexander Myshov接受的答案中提到的设置。

厨房在Fedora和Ubuntu上下沉

这可能是一个矫kill过正的解决方案,但是首先需要使它持续运行,然后才能简化它。

  1. 安装通用的电力线字体sudo dnf install powerline-fonts(或sudo apt install fonts-powerline)-这意味着您可以使用已经安装的任何字体。如果您没有像dnf / apt这样的简单安装方法,则有手动进行操作的说明,例如https://www.tecmint.com/powerline-adds-powerful-statuslines-and-prompts-to-vim-and -bash /,官方文档也有说明(https://powerline.readthedocs.io/en/latest/installation/linux.html#fonts-installation)。

    现在关闭终端,重新打开,如果您编辑终端首选项并设置自定义字体,请检查Powerline符号字体是否可用。您不想直接使用该字体,只需检查它是否可用。现在尝试打开Vim,看看您是否有漂亮的符号。

  2. 如果常规电力线字体不起作用,或者您想改进某些情况,则可以尝试安装单个的“修补”字体,这花了一段时间才能弄清楚,但是您可以从字面上直接转到https中想要的文件夹: //github.com/powerline/fonts/并下载,我在测试中最喜欢的字体是Source Code Pro修补字体。然后,只需打开下载的字体文件,然后单击“安装”即可。

    如果您希望使用命令行,则可以安装所有修补的字体

     $ git clone https://github.com/powerline/fonts.git --depth=1
     $ fonts/install.sh
     $ rm -rf fonts
    

    这将安装所有修补的mono字体,但是随后您就有机会探索可能的字体。它安装的字体列表是可用源代码字体的非常不错的列表。这也意味着您不必费力安装包含的每种单独字体。

  3. 检查是否可以在终端首选项中指定字体,如果缺少字体,请重新打开终端会话,因此请注意此处可能有两个选项:
    1. 通用电力线字体可以工作,在这种情况下,您可以只使用基本字体,例如DejaVu Sans Mono
    2. 如果无法正常工作,则上面下载的修补字体应该是正确的,例如,DejaVu的等效字体为“ DejaVu Sans Mono for Powerline”。

调整Linux

当我第一次真正使用它时,它确实令人失望,因为图标没有完全匹配。但是根据FAQ,我们需要做一些调整。我从Inconsolata开始,因为这为我在Windows和Linux上提供了一致的字体。您可以使用以下命令在Ubuntu上轻松安装常规字体apt install fonts-inconsolata

在此处输入图片说明

箭头太大,以丑陋的方式向上移动。

然后,我尝试了所有其他默认的Ubuntu字体。

Ubuntu单声道:

在此处输入图片说明

DejaVu Sans Mono:

在此处输入图片说明

这具有正确的垂直位置,但右侧箭头后面有一个空格。

为什么使用修补字体

使用默认字体依赖于Powerline字体自动修补现有字体。但是,您可以通过使用修补字体来改善航空公司符号的外观。这些是使用修补字体的等效项。

我喜欢使用较大的字体,所有这些都以16号字体显示,而且它还会显示一些小问题。

电力线的Inconsolata:

在此处输入图片说明

这仍然有问题,但是dz变体几乎解决了所有问题。

Inconsolata-dz for电力线dz:

在此处输入图片说明

这在右侧箭头上有一条发际线断裂,但在其他方面还是完美的。

Ubuntu Mono衍生品Powerline Regular:

在此处输入图片说明

这仍然有烦人的问题。

DejaVu Sans Mono for Powerline图书:

在此处输入图片说明

这在右侧箭头上有一条发际线断裂,但在其他方面还是完美的。我实际上更喜欢Inconsolata-dz,因为LN图标更具可读性。

除了这些常规字体外,我几乎尝试了所有可用字体,而我最喜欢的是Source Code Pro。

电力线媒体的源代码专业版

在此处输入图片说明

在箭头尺寸过大的尺寸16上确实存在问题,但是在尺寸14上几乎没有引起注意。分支和LN图标的确溢出到底部,但是以某种方式,这不会使我感到烦恼。

电力线灯源代码专业版

在此处输入图片说明

尽管仍然存在图标溢出的问题,但这几乎完全解决了中等字体的箭头大小的问题,并使之变得完美。

源代码专业版

当我研究字体的选项时,您会注意到一些事情,某些字体补丁在细节上绝对是最低的,如果将此与Source Code Pro列表进行比较,那将是非常重要的。Source Code Pro是一种非常详细和完整的字体,已被认为可以在多种情况下使用。对于边缘情况,这种完整性很重要。

用作修补字体,它几乎完美地显示了vim-airline栏。这么多替代方案的好处是使用了浅色字体,该字体可以更好地显示vim-airline栏。

Source Code Pro也正在Adobe的Github存储库上进行持续的开放开发。

处理Windows的精美花朵(假设GVim)

Powerline字体不适用于Windows,因此您唯一的选择是使用修补字体。同样,安装所有字体的bash脚本不起作用,因此您必须执行相同操作git clone,然后进入每个单独的目录并安装所需的字体。

我下载了所有Source Code Pro修补字体并安装了它们。即使将它们安装为单独的字体,它们也将作为单个字体“ Powerline的Source Code Pro”添加到Windows,并带有单独的属性来指定粗细。

然后(假设GVim)将其添加到您的.vimrc

set guifont=Source\ Code\ Pro\ for\ Powerline:h15:cANSI

如果要使用“浅色”字体,请使用此字体。

set guifont=Source_Code_Pro_Light:h15:cANSI

它没有多大意义,因为它不需要包括“ for Powerline”,但这就是它的工作方式(我通过在GVim中设置字体然后set guifont?查看使用的GVim来弄清楚了)。我还发现当您使用GVim切换字体时,字体渲染不是很好。最初,我不喜欢Light字体,因为当我使用GVim菜单切换时,它的显示效果很差,但是如果将以下内容放入您的设备中.vimrc并重新启动GVim,它应该看起来很可爱。

一件好事是您可以将DOS / Powershell提示符设置为相同的字体。然后,使用补丁字体,也可以使Powerline在DOS的常规Vim中工作。

如果您不相信我,这里是在Powershell中的Vim中工作的地方:

在此处输入图片说明

在此处输入图片说明


3

重新安装Vim后,我遇到了同样的问题:我的旧修补字体与新的航空公司符号不兼容。

帮助(:help airline-customization)中也提到了旧符号:

" old vim-powerline symbols
let g:airline_left_sep = '⮀'
let g:airline_left_alt_sep = '⮁'
let g:airline_right_sep = '⮂'
let g:airline_right_alt_sep = '⮃'
let g:airline_symbols.branch = '⭠'
let g:airline_symbols.readonly = '⭤'
let g:airline_symbols.linenr = '⭡'

在将这些行放入vimrc后,一切正常。


赞!当前对我来说最好的,只是这些符号略高
ryenus 17-6-29

1
您需要先定义字典:let g:airline_symbols = {}
PerseP
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.