vim状态栏_Vim的最后状态

本文介绍了如何使用Vim脚本自定义状态栏,包括基本语法、格式化技巧及高级表达式等内容,帮助读者打造出个性化的Vim状态栏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vim状态栏

对于某些Vimmers而言,他们的地位就像绝地的光剑一样。 每一个都是相似但独特的-展现潜伏身份的美学樱桃。 这个想法导致了诸如PowerlineAirlineLightline之类的项目 。 尽管都很有趣,但是本教程还是按照旧的方式进行的。 我们将前往隐喻的Dagobah ,使用Force方法( Vim脚本)制作状态栏。

在开始之前,这里是语法的预览。 下面的屏幕截图是我当前的状态行,以及用于生成它的代码

下面的代码

基础

与对Vim的任何探索一样,我们需要从底层开始:help statusline

非空时,此选项确定状态行的内容。 该选项由散布在普通文本中的printf样式'%'项目组成。 每个状态行项目的形式为:
%-0{minwid}.{maxwid}{item}
除{item}外的所有字段都是可选的。 可以将单个百分号表示为“ %%”。 最多可以指定80个项目。

这看起来似乎令人困惑且不直观,但不要担心……还不算太糟。

首先是要告诉Vim我们想要看到状态栏。 您可以通过将以下代码放入.vimrc (vim)或init.vim (neovim)中来完成此操作。

set laststatus=2

现在,我们已经告诉Vim我们感兴趣,我们需要给它一些显示的东西! 对于一个非常基本的示例,请键入以下内容:

set statusline=lightsaber!

重新加载Vim时,您应该看到:

显然,此状态线并不是非常有用,但是要小心!

句法

在状态栏星系中,存在一种特殊的语法。 每行都是从单个项目派生的,每个项目都对应于一条特定的信息。 例如, %f将给出当前存在于缓冲区中的文件的相对路径。

echo "Hello, this is a .jedi file" >> lightsaber.jedi

将以下内容插入Vim配置。

set statusline=%f

打开我们之前创建的文件。 您应该看到状态行及其上打印的文件名。

总的来说,这是状态栏的公式。 您将使用这些预定义的映射来创建武器。 有一件事情要注意:如何组合多个项目。

完整的地图列表:

一个显示文件名,当前行,总行和缓冲区号的最小示例:

格式化

我们开始到达某个地方,不再是padawan。 但是,还有更多技巧可以覆盖。

其中第一个涉及控制我们的物品位于哪一边。 具体来说, =符号。 An =表示部分之间的分离点。

另一个格式设置必须是空格。 使用反斜杠- \来转义空格。 下面的例子中有注释的一个其它符号- <<用来告诉Vim如果行太长则在哪里截断行。

有了您现在所掌握的知识,您应该能够将一些像样的东西放在一起。 但是旅程还没有结束!

表达方式

有时候您可能会对包含以前未定义的内容感兴趣。 这是表达式将发挥作用的地方。 在Vim的状态行语法中, %{...}之间的任何内容都将作为表达式求值,并用结果替换。 因此,假设您对于set showmode太酷了,并希望直接在您的行中使用它,这就是您将如何实现此任务的方法。

这是您迈向黑暗面的第一步。 现在,您几乎可以将您心中想要的任何内容添加到行中。 例如,如果您是加密货币,则可以增加比特币和ETH的价格-可能性无穷无尽。 有关Vim Script的详细介绍,请点击此处 。 我还在下面提供了更多示例。

文件大小

只读文件

还值得注意的是,您可以在表达式中利用Vim的内部函数。

颜色

时机已到。 您会选择哪一边? 坚韧极简的生活接受了Vim神所提供的一切。 或者,您会沉迷于郁郁葱葱的彩虹之中吗? 就个人而言,我不太在乎……但是,幸运的是,选择权是您的!

有两种方法可以向状态行添加颜色。 一种是通过小猪退缩您的配色方案。 另一种是自己定义颜色。

高亮组

第一种着色方法是从您的colorscheme中借用的。 例如, #function#将为function关键字使用定义的突出显示。 下一张图片是使用此技术的状态栏:

下面的代码

User1..9颜色

第二种方法取决于您要定义的颜色。 如果要高度控制,这是您的选择。 在继续之前,我们将简要地回到Vim的帮助中进行概述。

将突出显示组设置为User {N},其中{N}来自minwid字段,例如%1。 使用%或%0 *恢复正常的高亮显示。 User {N}和StatusLine之间的差异将应用于非当前窗口状态行的StatusLineNC。 数字N必须在1到9之间。请参见| hl-User1..9 |。

这可能有点令人困惑,所以让我们跳一个例子。 首先要做的是指定我们感兴趣的颜色。 语法类似于创建自定义颜色方案。

hi User1 ctermbg=green ctermfg=red guibg=green guifg=red
hi User2 ctermbg=red ctermfg=blue guibg=red guifg=blue
hi User3 ctermbg=blue ctermfg=green guibg=blue guifg=green

为了应用它,您指定用户号,后跟* - %1* User1颜色。 下面是一个完整的示例。

该行的代码如下

轻便式版本:

您的选择仅受您的想象力和时间限制。

下一步

尽管已涵盖了所有内容,但仍有很多东西要学习。 在建议其他资源之前,我将简要介绍另外几个主题。

特殊的角色

我的产品系列中的‹‹ ››仅用于美学目的。 您可以转到unicode表中找到有趣的字符。

每种模式不同的颜色

如果您确定不使用插件就可以这样做。 最简单的路径将使用augroupEvents 。 我将从:help Events 。 然后,您将为用户定义的颜色设置一个augroup ,并根据事件关闭它们。 我不会提供解决方案,因为我猜测这会激发一些动机。 因此,开始学习一些Vim脚本将是一项有价值的任务。 老实说,这还不错。 还有其他方法,但是在某些时候您最终会重新发明轮子。

有关Vim的更多信息,请访问我的博客!

其他资源

翻译自: https://hackernoon.com/the-last-statusline-for-vim-a613048959b2

vim状态栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值