Reputation: 110502
What is the most efficient way to copy text inside quotes in vim, for example hello in "hello"
'hello'
'''hello'''
or """hello"""
? The quickest I'm able to do is:
v
(enter visual mode)w
or e
(get to the end of the text, approximatelyh
or l
to get to the exact correct placey
to yank the textHere's an example: https://gyazo.com/a2bb432dc04de58ac628327740f6c033. While I might be able to improve to get it, perhaps in 3s, doing this with a mouse would take all of 0.25s. What would be the most efficient way to do a copy-paste such as the above?
Upvotes: 4
Views: 3290
Reputation: 2866
If the text is surrounded by only one pair of quotes, in this case double quotes, the most efficient way to copy that text is yi"
. This will copy (y
) the text inside the quotes (i"
), regardless of where the cursor originally is. To make this work with single quotes, brackets, parentheses, or something else, simply replace the "
with the character surrounding the text.
If the text is surrounded by more than one pair of quotes, however, we must first navigate to the innermost quote before we can copy the text inside. The command above will not work, since it will see the first two quotes with nothing in between them (""
).
The fastest way to navigate to the first quote is f"
. Then, press ;
until the cursor is on the innermost quote, and we can now use yib
(the ib
command selects the inner block.) to copy the text inside!
It might be possible to create a mapping that will automatically move the cursor to the innermost quote and copy the text inside, but that is a bit too advanced for me.
Upvotes: 6
Reputation: 15196
If your cursor is inside the word you want to copy, simply press yi followed by a quote char ' or "
Make sure you also read :h text-objects
Upvotes: 2