How do you select a single line in VIM, when your cursor as at some random point along that line?

I know you can do (v, $) to get to the end of the line, or (v, ^) to get to the start, but when you do (v,$,^) it logically doesn't select the whole line, it selects from cursor, until end, then switches it to cursor until beginning... So this approach fails of course.

5

Best Answer


Capital V selects the current line in one key stroke; two, if you include the "shift" in shift+v.

V would be direct answer. However, I rarely need to do this because "selecting the current line" is generally part of a larger task. Example of such tasks includes copying the line and deleting the line. There's generally a better way to accomplish the task as a whole. The following are some of the tasks I can think of:

  • copy the line: yy
  • delete the line: dd
  • indent the line: >> or <<
  • select the current paragraph: vap or vip
  • delete from the current line to the end of the file 0dG
  • highlight the current line to see where my cursor is: use :set cursorline in .vimrc file

One case in which I do use V is to select multiple lines that are not a paragraph or some other text object. In this case, there's a tip that might be useful for you: once in the selection mode, you can use o to jump the cursor between the start and the end of the selection.

While this might be more keystrokes.

If you are already in visual mode you can use o to go to the other end of the visual selection.

So you can type

v0o$

To select the whole line. Take a look at :h visual-change


However from the comments it seems you just want to copy the whole line.

Which would just be yy

Just change your order of operations. You almost have it.

^,v,$

Or as suggested by @Kent: because ^ goes to the first non-empty char, if the line has leading spaces:

0,v,$

I know this thread is super old, but I just had the same question. This thread came up first, but I found a different answer than any found here. Use 'V' to select whole lines. That easy. One character to select the whole current line.