tags:

views:

126

answers:

2

In Vim, it's a quick 3-character command to change what's inside the current quoted string (e.g., ci"), but is there a simple way to change what type of quotes are currently surrounding the cursor?

Sometimes I need to go from "blah" to """blah""" or "blah" to 'blah' (in Python source code) and I'd ideally like to do it quickly using default key bindings.

+14  A: 

Try the surround.vim plugin. I find it an essential addition to any vim installation.

Jay
That's a nice plugin!
Alex Feinman
looks perfect, thanks!
marcopolo1010
To go from quotes to triple-quotes, do `ysa""wysa""`. It is worth putting in a macro or binding it. For example, `:noremap <C-c> :normal ysa""wysa""<CR>` will bind this to `Ctrl`+`c`. Alternatively, you can just map `:noremap <C-c> :normal ysiw"w<CR>` to surround any one word with quotes, and then press `Ctrl`+`c` or whatever your binding is *n* times to add *n* sets of quotes.
Jay
I've been using vi since 1980 and ya learn something new every day.
Peter Rowell
+2  A: 

Surround.vim is great, but I don't think it'll handle your triple-quoted needs directly.

The way I've done stuff along these lines (when surround wasn't appropriate) was to use %, make the change, then double-backtick to go back to the starting point. E.g. if the cursor is somewhere in a single-quoted string, do f'%, make the change, then double-backtick and ..

dash-tom-bang
Didn't know about double backtick, I would have taken the same approach except I would have made a throwaway mark. +1.
Logan Capaldo