Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Horizontal line in vim

Tags:

linux

vim

What does a horizontal line in vim mean? While editing a remote file I see a horizontal line in the current line.

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

I don't see it while editing local files

Edit: cursorline is not shown until I save the file(:w). When I type :w and enter password, cursorline appears. Why does it have such a behavior? When I edit file in remote machine cursorline is turned off and is not shown.

like image 978
user16948 Avatar asked Mar 07 '12 21:03

user16948


People also ask

How do you change from vertical to horizontal in vim?

Splitting Vim Screen HorizontallyTo navigate to the bottom section hit Ctrl + w , followed by the letter 'j' . To head back to the upper section, press Ctrl + w , followed by the letter 'k' .

How do I add a line to a vim file?

Starting in normal mode, you can press O to insert a blank line before the current line, or o to insert one after. O and o ("open") also switch to insert mode so you can start typing. To add 10 empty lines below the cursor in normal mode, type 10o<Esc> or to add them above the cursor type 10O<Esc> .

How do you go to a line in vim?

If you're already in vi, you can use the goto command. To do this, press Esc , type the line number, and then press Shift-g . If you press Esc and then Shift-g without specifying a line number, it will take you to the last line in the file.

How do I highlight a line in vim?

If you want to select the entire line in a file, press V. Now when you press k or j to go up and down, vim will select the entire line above and below your cursor. Finally, you can select text in columns by pressing ctrl+v and moving up or down the block.


1 Answers

As others have answered, the effect is probably being caused by the cursorline option.

You can track down what is script made the most recent change to an option by running the command set optname? under the verbose command:

:verbose set cursorline?

You will probably just find that the Netrw plugin set it; Netrw handles local directory browsing and remote directory/file access like your scp:// example. Netrw adjusts cursorline (and cursorcolumn) for its own purposes (e.g. directory listings), but it tries to restore the value to the “user value”. Unfortunately, its idea of the “user value” is captured when part of the Netrw code loads and is not updated afterwards.

My guess is that, somehow (via some other plugin, or bit of configuration), cursorline is set when Netrw loads (and captures its value), but it is later reset by the time you start editing the first file. Then, when you later save the file (:w), Netrw restores the “captured” value. Unfortunately, there does not appear to be any good way to update this “captured” value of the cursorline option (there is no “external” access to the script variable it uses, and it does not “recapture” if you manually reload the file).

What you can do, however, is explicitly load the bit of Netrw that “captures” cursorline when your desired value is active. You could do that with the following two commands early in your ~/.vimrc (possibly at the very top, if necessary—it needs to be before the first time autoload/netrw.vim would ever be used):

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

Netrw will still set/reset cursorline (and cursorcolumn), but as long as the value you normally want matches the value that is active right before Netrw is loaded, then you will not notice it.

like image 150
Chris Johnsen Avatar answered Oct 03 '22 16:10

Chris Johnsen