vim中的水平线

use*_*948 10 linux vim

vim中的水平线是什么意思?编辑远程文件时,我在当前行中看到一条水平线.

http://i.stack.imgur.com/M8GXB.png

我在编辑本地文件时没有看到它

编辑: 在我保存文件(:w)之前不显示cursorline.当我输入:w并输入密码时,会出现光标.为什么会有这样的行为?当我在远程机器中编辑文件时,光标线被关闭并且不显示.

Chr*_*sen 11

正如其他人所回答的那样,效果可能是由cursorline选项引起的.

您可以追查什么是脚本运行的命令所做的最近一次更改的选项set optname?verbose命令:

:verbose set cursorline?
Run Code Online (Sandbox Code Playgroud)

你可能会发现Netrw插件设置了它; Netrw像您的scp://示例一样处理本地目录浏览和远程目录/文件访问.Netrw 为了自己的目的(例如目录列表)调整cursorline(和cursorcolumn),但它尝试将值恢复为"用户值".不幸的是,当部分Netrw代码加载并且之后没有更新时,它会捕获"用户价值"的概念.

我的猜测是,cursorline当Netrw加载(并捕获其值)时,以某种方式(通过一些其他插件或配置位)设置,但稍后在您开始编辑第一个文件时重置它.然后,当您稍后保存文件(:w)时,Netrw将恢复"捕获"值.不幸的是,似乎没有任何更好的方法来更新该cursorline选项的"捕获"值(对它使用的脚本变量没有"外部"访问权限,如果手动重新加载文件,它不会"重新捕获") .

但是,您可以做的是明确加载Netrw的位,cursorline当您想要的值处于活动状态时"捕获" .您可以在您的早期使用以下两个命令~/.vimrc(可能在最顶层,如果需要 - 它需要在第一次autoload/netrw.vim使用之前):

set nocursorline
runtime autoload/netrw.vim " will 'capture' cursorline and cursorcolumn values
Run Code Online (Sandbox Code Playgroud)

Netrw仍将设置/重置cursorline(和cursorcolumn),但只要您通常想要的值与Netrw加载之前处于活动状态的值匹配,那么您将不会注意到它.


Sin*_*ion 5

我不太了解让netrw真正捕获正确值的最简单的解决方案,但至少(因为对我来说,nocul是正确的),添加:

let g:netrw_cursorline=0
Run Code Online (Sandbox Code Playgroud)

到我的结尾~/.vimrc似乎已经解决了我的问题.希望这有助于某人!