vim状态栏
对于某些Vimmers而言,他们的地位就像绝地的光剑一样。 每一个都是相似但独特的-展现潜伏身份的美学樱桃。 这个想法导致了诸如Powerline , Airline和Lightline之类的项目 。 尽管都很有趣,但是本教程还是按照旧的方式进行的。 我们将前往隐喻的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如果行太长则在哪里截断行。
有了您现在所掌握的知识&#xff0c;您应该能够将一些像样的东西放在一起。 但是旅程还没有结束&#xff01;
表达方式
有时候您可能会对包含以前未定义的内容感兴趣。 这是表达式将发挥作用的地方。 在Vim的状态行语法中&#xff0c; %{...}
之间的任何内容都将作为表达式求值&#xff0c;并用结果替换。 因此&#xff0c;假设您对于set showmode
太酷了&#xff0c;并希望直接在您的行中使用它&#xff0c;这就是您将如何实现此任务的方法。
这是您迈向黑暗面的第一步。 现在&#xff0c;您几乎可以将您心中想要的任何内容添加到行中。 例如&#xff0c;如果您是加密货币&#xff0c;则可以增加比特币和ETH的价格-可能性无穷无尽。 有关Vim Script的详细介绍&#xff0c;请点击此处 。 我还在下面提供了更多示例。
文件大小
只读文件
还值得注意的是&#xff0c;您可以在表达式中利用Vim的内部函数。
颜色
时机已到。 您会选择哪一边&#xff1f; 坚韧极简的生活接受了Vim神所提供的一切。 或者&#xff0c;您会沉迷于郁郁葱葱的彩虹之中吗&#xff1f; 就个人而言&#xff0c;我不太在乎……但是&#xff0c;幸运的是&#xff0c;选择权是您的&#xff01;
有两种方法可以向状态行添加颜色。 一种是通过小猪退缩您的配色方案。 另一种是自己定义颜色。
高亮组
第一种着色方法是从您的colorscheme中借用的。 例如&#xff0c; #function#
将为function关键字使用定义的突出显示。 下一张图片是使用此技术的状态栏&#xff1a;
User1..9颜色
第二种方法取决于您要定义的颜色。 如果要高度控制&#xff0c;这是您的选择。 在继续之前&#xff0c;我们将简要地回到Vim的帮助中进行概述。
将突出显示组设置为User {N}&#xff0c;其中{N}来自minwid字段&#xff0c;例如&#xff05;1。 使用&#xff05;或&#xff05;0 *恢复正常的高亮显示。 User {N}和StatusLine之间的差异将应用于非当前窗口状态行的StatusLineNC。 数字N必须在1到9之间。请参见| hl-User1..9 |。
这可能有点令人困惑&#xff0c;所以让我们跳一个例子。 首先要做的是指定我们感兴趣的颜色。 语法类似于创建自定义颜色方案。
hi User1 ctermbg&#61;green ctermfg&#61;red guibg&#61;green guifg&#61;red
hi User2 ctermbg&#61;red ctermfg&#61;blue guibg&#61;red guifg&#61;blue
hi User3 ctermbg&#61;blue ctermfg&#61;green guibg&#61;blue guifg&#61;green
为了应用它&#xff0c;您指定用户号&#xff0c;后跟*
- %1*
User1颜色。 下面是一个完整的示例。
轻便式版本&#xff1a;
您的选择仅受您的想象力和时间限制。
下一步
尽管已涵盖了所有内容&#xff0c;但仍有很多东西要学习。 在建议其他资源之前&#xff0c;我将简要介绍另外几个主题。
特殊的角色
我的产品系列中的‹‹ ››
仅用于美学目的。 您可以转到unicode表中找到有趣的字符。
每种模式不同的颜色
如果您确定不使用插件就可以这样做。 最简单的路径将使用augroup
和Events
。 我将从:help Events
。 然后&#xff0c;您将为用户定义的颜色设置一个augroup
&#xff0c;并根据事件关闭它们。 我不会提供解决方案&#xff0c;因为我猜测这会激发一些动机。 因此&#xff0c;开始学习一些Vim脚本将是一项有价值的任务。 老实说&#xff0c;这还不错。 还有其他方法&#xff0c;但是在某些时候您最终会重新发明轮子。
有关Vim的更多信息&#xff0c;请访问我的博客&#xff01;
其他资源
- DIY Vim状态栏
- Vim pr0n&#xff1a;制作自己的状态行
- 更简单的Vim状态线
- 建立自己的Vim状态线
- 我的自定义状态行
翻译自: https://hackernoon.com/the-last-statusline-for-vim-a613048959b2
vim状态栏