基于行计数设置行号
如果文件有大量行,我希望启用行号,否则默认情况下不启用行号。如果我运行命令:if行(“$”)>;150
解答动态
:设置编号
endif
当vim打开时,文件行按预期启用/不变。把这条线放进我的初始化vim(对于neovim)没有效果。我做错了什么?谢谢!
脚本初始化vim只有在您第一次启动Neovim或手动获取文件源时才执行(vimrc和vim也是如此)技巧:
augroup ShowLineNumberForLongFiles自动驾驶!autocmd BufEnter*if line('$')>;150setlocal number
endifaugroup end 每当您输入新的缓冲器组的第一行(autocmd!)有什么办法让大家清场吗内容。这个有助于避免在手动获取配置文件时堆积脚本。
请注意,我将设置更改为setlocal,以确保该选项仅应用于当前缓冲区。
以下是一些相关的帮助主题,您可以阅读以获取更深入的信息平面:
:小时au命令:h:自动抄送:h BufEnter:小时A组:h:来源:h集:h setlocal此处适合使用自动命令…
autocmd BufReadPost*if line('$')>;150:setlocal number
else
:setlocal nonnumber
endif OR,您可以使用MartinTournoij的这一出色的增强功能。结果是一样的,但占用的空间要小得多空格:
autocmd BufReadPost*让gt;150 解释:首先,gt;150基本上返回true或false。由于'number'应该设置为true或false,我们也可以直接从条件结果let&l:number=…
中赋值,不管怎样,这种自动命令方法都可以完成一些事情…
确保在加载任何缓冲区后(当已知行数时)进行检查。使用特定于缓冲区的设置,而不是全局设置设置。显式根据需要启用或禁用以确保正确的设置。 请注意,如果文件具有设置/取消设置具有优先级的行号的模型线,并且将覆盖此行号。
如果在通常使用自动命令之前未使用这些命令,则初始化vim文件。您应该将它们包含在一个自动命令组中,如下所示…
augroup initvimucs au![auto commands go here]augroup end 这可以确保在重新加载时不会多次输入这些命令初始化vim.
Update:我不知道您是否在考虑这个问题,但值得指出的是(再次向MartinTournoij表示赞同)这是静态的,即行号取决于缓冲区负载,以及随后是否超过或低于150行什么都不会改变。这是绝对可能的扩展,所以它是动态的。如果你对此感兴趣,请告诉我- End
免责声明:
本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。