42 votes
Accepted

What is the select mode and when is it relevant to use it?

The whole point of select mode is to provide a selection behavior similar to the one used in conventional editors. On the same note, there's mswin.vim which changes a bunch of options and mappings to ...
romainl's user avatar
  • 39.1k
42 votes

Git Fugitive how to git add a visually selected chunk of code

fugitive.vim now allows for staging a selection of a hunk with visual mode. Open the git summary with :Git (or :G) Expand the file which contains the lines you want to stage with > (or = to toggle)...
Kaio's user avatar
  • 553
29 votes
Accepted

Git Fugitive how to git add a visually selected chunk of code

There might be other ways, but this approach lets you to do more than adding a chunk, which is why I tend to use it quite a lot. Run :Gdiff command. It will open a split with version of current file ...
xaizek's user avatar
  • 1,738
26 votes
Accepted

How do you indent > < without leaving visual mode and losing your current selection?

I have this in my vimrc: "keep visual mode after indent vnoremap > >gv vnoremap < <gv Note that you could also simply use . (dot) to repeat the last indent action.
VanLaser's user avatar
  • 9,620
26 votes
Accepted

Visual select from cursor to next empty line?

Vim understands the concept of a "paragraph". Vim's definition of a paragraph is a block of text surrounded by blank lines*. There are several motions and text objects to work with this. [count]} – ...
Martin Tournoij's user avatar
22 votes

How to replace only within visual selection?

There’s \%V for that, see :h %V: %V Match inside the Visual area. When Visual mode has already been stopped match in the area that gv would reselect. This is a /zero-width match. To make sure the ...
dessert's user avatar
  • 345
21 votes

Quickly calculate the total of a column of numbers

:r!awk '{sum+=$6} END {print "Total: "sum}' % Explanation: :r ........... read (put result in this file) ! ............ external command awk .......... external tool {sum+=$6} .... sixth ...
SergioAraujo's user avatar
  • 1,167
21 votes
Accepted

How can I source a visual selection of vimscript?

On the command line hit <C-u> then type @* and enter. <C-u> will delete the visual range '<,'> that has been automatically inserted if some text is visually selected. :@* will ...
saginaw's user avatar
  • 6,706
20 votes
Accepted

How to run a substitute command on only a certain part of the line

Yes, this is a long answer. That's because I try to cover the sometimes intimidating sub-replace expression as clearly as I can. Don't be frightened...please dive in! :) This can be looked at as a ...
B Layer's user avatar
  • 19.5k
18 votes
Accepted

Mapping a command in Visual Mode results in error E481: No range alllowed

I'm not sure, but I think that when you hit <leader>l to call :REPLSendLine, Vim automatically inserts the visual range '<,'>, and since your command is not defined with the attribute -...
user9433424's user avatar
  • 6,118
16 votes

Visual select from cursor to next empty line?

A shortcut for next empty line is }. So you just might want to use SHIFT+v}
marderh's user avatar
  • 263
16 votes
Accepted

Visual Block Mode edit with sequential number

Depending on your usecase the following might be useful: Create the entries all with the number "1": - "1" - "1" - "1" - "1" Then go to the second "1" and press V to start line-wise visual. Then ...
Ralf's user avatar
  • 9,097
15 votes
Accepted

Perform previous substitution for different selection with single keystroke

I think you want to do @: which replays the last ex command. See :h @: Note that this command can be called from normal mode and from visual mode. Also in this case it is not useful but you can also ...
statox's user avatar
  • 49.3k
15 votes
Accepted

Which text object defines text enclosed in space?

I believe you are looking for the WORD text object. From :h WORD: A WORD consists of a sequence of non-blank characters, separated with white space. An empty line is also considered to be a ...
Tumbler41's user avatar
  • 7,706
14 votes
Accepted

Passing visual range to a :command as its argument

See this answer on stackoverflow. The example given is: function! PrintGivenRange() range echo "firstline ".a:firstline." lastline ".a:lastline " Do some more things endfunction ...
statox's user avatar
  • 49.3k
13 votes

How do I restore visual mode selection highlighting?

I had this issue as well because I had switched to the "evening" color scheme in my ~/.vimrc file so that my comments were easier to read on a dark background: :colorscheme evening To restore visual ...
Integrator's user avatar
13 votes

Git Fugitive how to git add a visually selected chunk of code

Vimcasts has a great series on Fugitive.vim. The episode Fugitive.vim - working with the git index would be the the most helpful for your question. You can use :Gdiff to stage only portions of a file....
Peter Rincker's user avatar
13 votes

Git Fugitive how to git add a visually selected chunk of code

Stage Complete or Partial Hunks with vim-gitgutter Stage Complete Hunk <Leader>hs or :GitGutterStageHunk Stage Part of an Additions-only Hunk (since 8/2019) Visual mode {Visual}<Leader&...
Hotschke's user avatar
  • 4,640
13 votes
Accepted

Key binding to select the current paragraph

See: :h ip :h ap You are looking for the built in vip. Also, :h text-objects is a good start to find the text objects you are looking for. Edit To address your comment: to move the cursor to one ...
statox's user avatar
  • 49.3k
13 votes
Accepted

How to visually select based on indentation?

I've used vim-indent-object for a while with some success. It provides text objects like ii, ai, iI, and aI, each with slightly different semantics. For your sample code def some_method if @foo ...
D. Ben Knoble's user avatar
  • 25.3k
12 votes
Accepted

Select text till and including pattern

Just append /e to your search pattern. v/pattern/e
cee's user avatar
  • 301
12 votes

How to run a substitute command on only a certain part of the line

Since you mentioned visual mode... You can also use the \%V match to only match inside the current visual selection (or last one, if not in visual mode.) Using \%V would allow you to use the same ...
filbranden's user avatar
  • 28.4k
11 votes
Accepted

Extend visual selection until the last character on the line (excluding the new line character)

Your first and third points are answered by g_, which moves to the last non-whitespace character on the line. So, vg_ will visual select to the end of the line, excluding any whitespace and the ...
Doorknob's user avatar
  • 14.9k
11 votes
Accepted

How to source a part of a file

After you've done your Visual selection run this: y:@"<CR> y copies the selection to the unnamed register (") since we didn't explicitly name a register. Then :@" executes the contents of that ...
dedowsdi's user avatar
  • 6,188
10 votes
Accepted

How to I get around "normal" exiting visual mode?

There are two things we need to do: Since you are using a mapping to execute your function, the mapping rightly has to do :<c-u> in order to reliably call the function. But calling a function ...
joeytwiddle's user avatar
  • 3,592
10 votes

How do you indent > < without leaving visual mode and losing your current selection?

I know this isn't an automatic solution, but you can accomplish this by using gv after the visual indent. This will go into visual mode with the previous selection selected, and your cursor at the ...
Tumbler41's user avatar
  • 7,706
10 votes
Accepted

How to sort lines by the right most characters?

If you can use the rev command, you could reverse each line, sort and reverse again, using external commands in a pipe: %!rev | sort | rev This can be done entirely in Vimscript, but it's way more ...
muru's user avatar
  • 24.7k
9 votes
Accepted

Displaying the number of lines you have selected in Visual Mode?

g then Ctrlg will spit out something like this: Selected 10 of 4123 Lines; 67 of 11111 Words; 400 of 40000 Bytes
goldilocks's user avatar
9 votes
Accepted

Expand visual selection to inner curly braces

It's trying to select the block that encompasses all of the selection. Since your selection is "leaking" out of the block and there's no other block containing it, it fails. Try Vja{ on this to see ...
Tumbler41's user avatar
  • 7,706
9 votes
Accepted

Get 2 lines yanked or 1 line yanked confirmation

You are looking for the 'report' option: 'report' number (default 2) global Threshold for reporting number of lines changed. When the number of changed lines is more than ...
mMontu's user avatar
  • 6,600

Only top scored, non community-wiki answers of a minimum length are eligible