vim中的水平线

时间:2012-03-07 21:00:35

标签: linux vim

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

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

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

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

5 个答案:

答案 0 :(得分:11)

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

您可以通过在verbose command下运行命令set optname?来跟踪脚本对选项所做的最新更改:

:verbose set cursorline?

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

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

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

set nocursorline
runtime autoload/netrw.vim " will 'capture' cursorline and cursorcolumn values

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

答案 1 :(得分:5)

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

let g:netrw_cursorline=0

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

答案 2 :(得分:4)

这是cursorLine。它的外观在你的colorscheme中定义。远程计算机上的那个可能与您的不同,或者您的客户端/服务器$TERM之间存在不匹配。

答案 3 :(得分:2)

Yup,“:设置游标线”或“:设置nocursorline ”以打开或关闭该行。

命令“ vim scp:// .... ”将远程文件复制到本地计算机(即运行“vim”进程的计算机)上,然后在“vim”中打开文件“为了编辑,然后,如果您修改了文件,请将文件复制回远程系统。因此,语法突出显示等仅由本地计算机上的“vim” 确定。

具有相同语法类型的文件(“:se syn ”以显示当前语法突出显示方案)以相同的方式突出显示。您看到差异的文件是否具有相同的语法类型?

答案 4 :(得分:2)

netrw.vim版本142修复了这个bug,至少对我来说是这样的(vim 7.3,旧的netrw.vim版本是140,在cygwin下运行)。

您可以在此处获取最新版本:http://www.vim.org/scripts/script.php?script_id=1075

相关问题