How to delete from the current cursor position to a particular character on the same line?

25 views
Skip to first unread message

Joseph Wulf

unread,
Feb 26, 2021, 11:00:12 AM2/26/21
to vim_use
I've a common problem that I've never been able to find a solution for.

With a sample script line like the following:
 printf "A(%14s), B(%s), C(%14s), D(%14s), E(%14s), F(%3s), G(%-24s), H(%4s), I(%14s), J(%s),", "${x01}","${x02}","${x03}","${x04}","${x05}","${x06}","${x07}","${x08}","${x09}","${x10}"

With my cursor at "B" how can I delete from the current cursor position (col 18) to the first double-quote mark (") efficiently?

Thank you.

Tony Mechelynck

unread,
Feb 26, 2021, 11:25:50 AM2/26/21
to vim_use
Moving to the next " is f" and the f motion is |inclusive| so df" should do it.

See ":help f" (without the quotes).

Best regards,
Tony.
> --
> --
> You received this message from the "vim_use" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php
>
> ---
> You received this message because you are subscribed to the Google Groups "vim_use" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+u...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/vim_use/c8220bfd-cad2-4365-8c74-5826488d110dn%40googlegroups.com.

Suresh Govindachar

unread,
Feb 26, 2021, 11:30:53 AM2/26/21
to vim...@googlegroups.com, Joseph Wulf
On 2/26/2021 7:35 AM, Joseph Wulf wrote:
> I've a common problem that I've never been able to find a solution for.
> ...
> ... how can I delete from the current cursor position ... to the first
> double-quote mark (") efficiently?

In normal mode, consider "deleting with motion": dt" or df"

--Suresh



Joseph Wulf

unread,
Feb 26, 2021, 12:18:38 PM2/26/21
to vim_use
That surely does it.  Thank you both, very much.

Eli the Bearded

unread,
Feb 26, 2021, 2:04:15 PM2/26/21
to vim_use
On Fri, 26 Feb 2021, Joseph Wulf <joseph...@gmail.com> wrote:
> I've a common problem that I've never been able to find a solution for.
...
> With my cursor at "B" how can I delete from the current cursor position
> (col 18) to the first double-quote mark (") efficiently?

Delete up to a quote mark later in the line:
dt"

Delete up to the third quote mark later in the line:
d3t"

Delete up to a quote mark earlier in the line:
dT"

Delete up to and including a quote mark:
df"

Delete up to and including a quote mark earlier in the line:
dF"

Delete up to and including the second quote mark earlier in the line:
d2F"

Delete forward using a repeat of last to or including search:
d,

Delete backward using a repeat of last to or including search:
d;

Delete to column 40 (either forward or backward):
d40|

I'm a frequent user of the f/F/t/T motions. Often one or the other is
the better choice to use due to frequency of characters used and
context.

In shell scripting, say, I may want to change {foo} to {bar} and
sometimes it will be in single quotes and sometimes double quotes, so
I'll use c2fo with the cursor on the {f} and then the . command works
properly.

Other times I'm changing a bunch of variable names all terminated at
the = to new different names, so I'll use ct= first and c; later.

Elijah

JB

unread,
Feb 26, 2021, 5:05:09 PM2/26/21
to vim...@googlegroups.com
Your {foo} to {bar} example has a more-efficient solution:

ci{

"Change inside curly-braces."

Works for quotation marks and brackets, too:

ci" or ci' or ci[ or ci<

You can be on either of the grouping characters or anywhere inside them.

Also, your ct= can be replaced with ce ("Change to end") using default delimiter chars.


Sent with ProtonMail Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
Reply all
Reply to author
Forward
0 new messages