DEV Community

Andy Huynh
Andy Huynh

Posted on

create a shortcut to toggle paste mode with Vim

copy cat

Vim has a paste mode you can toggle on or off - :set paste and :set nopaste. What if you can do this with less keystrokes?

Essentially, these commands prevent weird formatting when pasting text into your editor.

I will say - copy/pasting isn't a trivial action. Expect to perform copy/paste tenfold throughout your career. Typing out these commands gets cumbersome. If only we can shortcut this to improve your workflow.

Below is a leader command to which you can add to.vimrc (config file). Leader commands are merely a fancy shortcut native to Vim.

.vimrc

function! TogglePaste()
    if(&paste == 0)
        set paste
        echo "Paste Mode Enabled"
    else
        set nopaste
        echo "Paste Mode Disabled"
    endif
endfunction

map <leader>p :call TogglePaste()<cr>
Enter fullscreen mode Exit fullscreen mode

No Vimscript knowledge necessary. Just "copy/paste" this snippet to your .vimrc.

Ensure your terminal shell of choice knows about your updates. I either restart my terminal session or source my .vimrc.

Toggle on paste mode: hit the key combination \ + p. If this doesn't work... ensure you're in Vim normal mode (not insert or visual).

Toggle off paste mode: \ + P.

Top comments (2)

Collapse
 
moopet profile image
Ben Sinclair

You can use ! to toggle the state of an option, so I have this:

inoremap <F3> <esc>:set paste!<cr>i
nnoremap <F3> :set paste!<cr>
Enter fullscreen mode Exit fullscreen mode

It doesn't give me feedback as a message, but I have the PASTE option in my statusbar so it's always visible.
My config has F2 - whitespace and 80-column hint, F3 - paste mode, F4 -indentlines. This is because They're otherwise unused functions between F1 (which is often shadowed by the terminal emulator) and F5 (which is conventionally for debugging).

Collapse
 
andy4thehuynh profile image
Andy Huynh

Did not know this! Thank you.

I'm using the newer macs that come w/ a touchbar. I rarely have F2, F3 etc at my fingertips. Will come back to this if I use a different machine.