~/vimma $ less docs/copy-mode.md

page 2/5 · docs/copy-mode

Copy mode

Copy mode lets you select and copy text from a page without the mouse, with Vim's motions.

Copy some text

  1. Press v. A caret appears at the first text you can see, and the badge says VISUAL.
  2. Move the caret to where your text starts: j and k by line, w and b by word, or f and a character to jump to it on the line.
  3. Press v to start the selection, then move to extend it.
  4. Press y. The text is on the clipboard, and you are back in normal mode.

Esc leaves without copying. Selecting with the mouse works too: drag or double-click, then y copies, or the motions extend the selection.

Move the caret

ToPress
A character left / righth / l
A line down / upj / k
A word forward / back / to its endw / b / e
Start / end of the line0 / $
Top / bottom of the pagegg / G
To a character on the line (forward / back)f / F and the character
Start / end of the paragraph{ / }

A number repeats a motion: 3w.

Select and copy

ToPress
Start or drop a selectionv
Select whole linesV
Select the word under the caretiw
Copy and leavey
Copy the whole lines and leaveY

Text inside a text field is not reachable from copy mode: click the field and select there as usual.

All the keys for this page

The default bindings, as Vimma's own ctrl+b ? overlay lists them. Name is the action's name, which you use to remap it or to run it as a : command. Every key is on the keys page.

Copy mode (31)

ActionKeysName
Move caret lefthvisualcaret_left
Move caret downjvisualcaret_down
Move caret upkvisualcaret_up
Move caret rightlvisualcaret_right
Move caret a word forwardwvisualcaret_word_forward
Move caret a word backbvisualcaret_word_backward
Move caret to the start of the line0visualcaret_line_start
Move caret to the end of the line$visualcaret_line_end
Move caret to the top of the pageggvisualcaret_top
Move caret to the bottom of the pageGvisualcaret_bottom
Move caret to the end of the wordevisualcaret_word_end
Move caret to the previous word's endgevisualcaret_prev_word_end
Move caret to the next WORD (by spaces)Wvisualcaret_bigword_next
Move caret to the WORD's startBvisualcaret_bigword_back
Move caret to the end of the WORDEvisualcaret_bigword_end
Move caret to the line's first non-blank^visualcaret_first_char
Move caret to the paragraph's start{visualcaret_para_back
Move caret to the paragraph's end}visualcaret_para_next
Find a character forward on the linefvisualcaret_find_forward
Find a character backward on the lineFvisualcaret_find_backward
Till a character forward on the linetvisualcaret_till_forward
Till a character backward on the lineTvisualcaret_till_backward
Repeat the last f, F, t or T;visualcaret_find_repeat
Repeat the last find, reversed,visualcaret_find_reverse
Start or drop a selection at the caretvvisualtoggle_selection
Start or drop a line-wise selectionVvisualline_selection
Swap the selection's endsovisualswap_selection_ends
Select the word at the caretiwvisualselect_inner_word
Select the word at the caret and its spacesawvisualselect_a_word
Copy selection and leave copy modeyvisualyank_selection
Copy the selection's whole lines and leaveYvisualyank_lines

Details

Everything below is Vimma's own user guide for this topic, in full: every edge case and exception. You do not need it to get started.

v (or ctrl+b [, as in tmux) enters copy mode: a caret appears at the start of the first text you see, or at the selection if one is on screen, and the badge says VISUAL. It is Firefox's caret browsing (F7), for this page only, driven by Vim keys:

  • **h / l move the caret a character, j / k a line, w / b** a word (Firefox's word steps: w stops at the end of a word), **0 / $ to the start / end of the line, gg / G** to the top / bottom of the page. The page scrolls to keep the caret in view.
  • **e goes to the end of the word, ge to the end of the previous one. W / B / E** are the same for WORDs, which only spaces delimit (beta.gamma is one WORD). **^ goes to the first non-blank character of the line, { / }** to the start / end of the paragraph (the next one from its edge).
  • **f / F and a character go to the next / previous one on the line, including it in the selection; t / T stop just before it. ; repeats the last of these, ,** repeats it the other way. The line here is the text between line breaks, even if the page wraps it.
  • A count repeats any motion: 3e, 5j, 2f,.
  • **v** starts a selection at the caret; the motions then extend it. v again drops it and the caret moves on its own. **V** selects whole lines instead: the motions add lines, and V again drops it (v keeps the same text, character by character). **o swaps the ends, so the motions move the other one. iw selects the word at the caret, aw** the word and the spaces after it.
  • **y copies the selection to the clipboard as plain text, says "yanked 12 chars" and goes back to normal mode. With nothing selected it says "nothing to yank". Y** copies the whole lines the selection (or the caret) is on, then leaves the same way.
  • **Esc** drops the selection and goes back to normal mode.

With the mouse. Selecting text with the mouse in normal mode (dragging, a double click for a word, a triple click for a paragraph, shift+click) enters copy mode with that selection: the badge says VISUAL, y copies it, the motions extend it (a double click on a word, then e, takes the next word too) and Esc clears it. A click that selects nothing stays in normal mode, and so do links, text fields (insert mode, as always), drag and drop, and a page that selects text by itself. Firefox's own copying keeps working in every mode and in each pane: ctrl+c, the context menu's Copy, and a middle click pasting the mouse selection.

The page gets none of these keys, nor any other plain key while copy mode is on; chords such as ctrl+c or ctrl+t still work. In a frame (an embedded video page, a comment widget) copy mode works once the frame has focus (click it first). Text inside a text field is not reachable: focus the field and use its own selection.

Known limits

Vimma is pre-alpha. What does not work yet, or works with a catch, is listed on the known limits page:

The guide at the top is written for this site; the details are built from Vimma's docs/guide.md and bindings.md at 1050bcc (2026-10-10).

Keys on this site

Keyboard shortcuts for this website
j kscroll down, up
d uhalf a page down, up
gg Gtop, bottom
/search the docs, or filter the keys
] [next, previous docs page
g hgo home
g dgo to the docs
g kgo to keys
g igo to install
g ago to about
?this help; Esc closes it

In Vimma, ctrl+b ? lists every binding.