Горизонтальная линия в vim

Что означает горизонтальная линия в vim? При редактировании удаленного файла я вижу горизонтальную линию в текущей строке.

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

Я не вижу его при редактировании локальных файлов

Edit: курсор не отображается, пока я не сохраню файл (: w). Когда я набираю: w и вводим пароль, появляется строка маршрута. Почему у него такое поведение? Когда я редактирую файл в удаленной машине, курсор отключается и не отображается.

Ответ 1

Как ответили другие, эффект, вероятно, вызван опцией cursorline.

Вы можете отследить, что script сделал последнее изменение в опции, выполнив команду set optname? в команде verbose:

:verbose set cursorline?

Вероятно, вы просто найдете, что плагин Netrw установил его; Netrw обрабатывает просмотр локальных каталогов и удаленный доступ к каталогам/файлам, например ваш пример scp://. Netrw настраивает cursorlinecursorcolumn) в своих целях (например, списки каталогов), но пытается восстановить значение "значение пользователя". К сожалению, его идея "пользовательского значения" фиксируется, когда часть кода Netrw загружается и не обновляется впоследствии.

Я предполагаю, что каким-то образом (через какой-то другой плагин или бит конфигурации) cursorline устанавливается, когда Netrw загружает (и фиксирует его значение), но позже reset к моменту начала редактирования первый файл. Затем, когда вы позже сохраните файл (:w), Netrw восстановит "захваченное" значение. К сожалению, похоже, что нет хорошего способа обновить это "захваченное" значение параметра cursorline (нет "внешнего" доступа к переменной script, которую он использует, и он не "отбирает", если вы вручную перезагрузите файл).

Однако вы можете явно загружать бит Netrw, который "захватывает" cursorline, когда ваше желаемое значение активно. Вы могли бы сделать это со следующими двумя командами на ранней стадии ~/.vimrc (возможно, на самом верху, если необходимо - это должно быть до того, как в первый раз будет использоваться autoload/netrw.vim):

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

Netrw по-прежнему будет устанавливать / reset cursorlinecursorcolumn), но до тех пор, пока значение, которое вы обычно хотите, соответствует активному значению до загрузки Netrw, вы не заметите его.

Ответ 2

Я не совсем понимаю простейшее решение, чтобы получить netrw, чтобы действительно зафиксировать правильное значение, но по крайней мере (поскольку для меня nocul прав), добавив:

let g:netrw_cursorline=0

В конце моего ~/.vimrc, похоже, исправлена ​​проблема для меня. Надеюсь, это поможет кому-то!

Ответ 3

Это cursorLine. Его внешний вид определен в вашей цветовой гамме. На удаленном компьютере, вероятно, отличается от вашего или существует несоответствие между вашим клиентом/сервером $TERM.

Ответ 4

Yup, ": установить курсорную строку" или ": установить nocursorline", чтобы включить или выключить строку.

Команда " vim scp://...." копирует удаленный файл на ваш локальный компьютер (т.е. машина, где выполняется процесс "vim" ), затем открывается файл в "vim" "для редактирования, затем, если вы изменили файл, копирует файл обратно в удаленную систему. Таким образом, подсветка синтаксиса и т.д. Определяется только на "vim" на вашей локальной машине.

Файлы с таким же типом синтаксиса ( ": se syn", чтобы показать текущую схему выделения синтаксиса) подсвечиваются одинаково. Имеют ли файлы, в которых вы видите разницу, один и тот же тип синтаксиса?

Ответ 5

Версия 142 netrw.vim исправила эту ошибку, по крайней мере для меня (vim 7.3, старая версия netrw.vim была 140, запущена под cygwin).

Вы можете получить последнюю версию здесь: http://www.vim.org/scripts/script.php?script_id=1075