Why is the underscore command _ useful?Using the % command on a line without a bracketApplying an ex command to a visual selection or text objectWhy do `cw` and `ce` do the same thing?What does vim consider a paragragh?Why does >3k move the cursor up when >3j does not move it down?how to delete a paragraph respecting the folds?How to change fchar to search left if no char was found searching right?How to make fchar case insensitive?Why is :execute required in this --remote-silent command?Automatically jump to text object during `ci(`
Any examples of liquids volatile at room temp but non-flammable?
Are pressure-treated posts that have been submerged for a few days ruined?
How can I get people to remember my character's gender?
chromatic descent on minor chord
How do I calculate how many of an item I'll have in this inventory system?
Is disk brake effectiveness mitigated by tyres losing traction under strong braking?
Can my 2 children, aged 10 and 12, who are US citizens, travel to the USA on expired American passports?
Feasibility of lava beings?
Formatting Datetime.now()
How should I tell my manager I'm not paying for an optional after work event I'm not going to?
What to use instead of cling film to wrap pastry
How does summation index shifting work?
Importing a Part of the JSON
Where to draw the line between quantum mechanics theory and its interpretation(s)?
What is this weird transparent border appearing inside my Smart Object in Photoshop?
Are the Night's Watch still required?
Using Im[] and Re[] Correctly
Seeing 2 very different execution plans for an UPDATE between test & prod environments
Python 3 - simple temperature program
How does the reduce() method work in Java 8?
Is there precedent or are there procedures for a US president refusing to concede to an electoral defeat?
Endgame puzzle: How to avoid stalemate and win?
Agena docking and RCS Brakes in First Man
Handling Null values (and equivalents) routinely in Python
Why is the underscore command _ useful?
Using the % command on a line without a bracketApplying an ex command to a visual selection or text objectWhy do `cw` and `ce` do the same thing?What does vim consider a paragragh?Why does >3k move the cursor up when >3j does not move it down?how to delete a paragraph respecting the folds?How to change fchar to search left if no char was found searching right?How to make fchar case insensitive?Why is :execute required in this --remote-silent command?Automatically jump to text object during `ci(`
I'm a bit puzzeled as to why the underscore command _, which jumps to
the beginning of the (COUNT - 1)th line below the cursor, gets its own
key. When would I use this rather than + or ^?
cursor-motions
add a comment |
I'm a bit puzzeled as to why the underscore command _, which jumps to
the beginning of the (COUNT - 1)th line below the cursor, gets its own
key. When would I use this rather than + or ^?
cursor-motions
add a comment |
I'm a bit puzzeled as to why the underscore command _, which jumps to
the beginning of the (COUNT - 1)th line below the cursor, gets its own
key. When would I use this rather than + or ^?
cursor-motions
I'm a bit puzzeled as to why the underscore command _, which jumps to
the beginning of the (COUNT - 1)th line below the cursor, gets its own
key. When would I use this rather than + or ^?
cursor-motions
cursor-motions
edited Apr 25 at 17:54
Toothrot
asked Apr 25 at 17:29
ToothrotToothrot
1,536519
1,536519
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Good question!
As a motion by itself, you're right, _ is not a particularly useful key. :h _
*_*
_ <underscore> [count] - 1 lines downward, on the first non-blank
character |linewise|.
The key word here is "linewise". So if your goal is to just move the cursor, then ^, j, and + all get the job done, and there's not much point to _. But as an argument to an operator, _ is super powerful.
A lot of double-key shortcuts are actually just shortcuts for _. For example,
dd -> d_
cc -> c_
yy -> y_
Y -> y_
etc. Because it's a linewise motion, it basically selects the entire line to be operated on regardless of where your cursor starts, whereas ^ just goes from your character to the first non-blank.
It helps me when thinking about linewise vs blockwise motions to imagine that I'm pressing either v or V right before the motion. So I imagine d^ to be equivalent to v^d and I imagine d_ to be equivalent to V_d or V^d. Of course, you can also override a motion to force it to be linewise or characterwise. So dv_ is actually exactly the same as d^ or v^d, and dVw is like Vwd which is exactly like d_.
The reason it is specifically the "count-1th" line is so that 1dd (which is really d1_) deletes one entire line, 2dd (which is really d2_) deletes 2 entire lines, 3dd deletes 3 entire lines, etc.
1
All right, but would I ever actually use it?ddis easier thand_and3yjis easier than4y_.
– Toothrot
Apr 25 at 18:02
5
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
Apr 25 at 18:07
5
@Toothrot I guess I want to clarify that a little bit. In day to day vim editing, no it's really not particularly useful. I've almost never used it either. The reason it's useful is because it is the definition of a lot of useful commands.ddmight be more convenient thand_, but that's becauseddis just a mapping tod_. And it's also useful in vimscript.
– DJMcMayhem♦
Apr 25 at 19:24
9
Some actions that act on a "motion" may not have other shortcuts. Something like "gU_" will uppercase everything on the current line, even if the cursor is not at the start of the line.
– bmb
Apr 25 at 23:08
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "599"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fvi.stackexchange.com%2fquestions%2f19745%2fwhy-is-the-underscore-command-useful%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Good question!
As a motion by itself, you're right, _ is not a particularly useful key. :h _
*_*
_ <underscore> [count] - 1 lines downward, on the first non-blank
character |linewise|.
The key word here is "linewise". So if your goal is to just move the cursor, then ^, j, and + all get the job done, and there's not much point to _. But as an argument to an operator, _ is super powerful.
A lot of double-key shortcuts are actually just shortcuts for _. For example,
dd -> d_
cc -> c_
yy -> y_
Y -> y_
etc. Because it's a linewise motion, it basically selects the entire line to be operated on regardless of where your cursor starts, whereas ^ just goes from your character to the first non-blank.
It helps me when thinking about linewise vs blockwise motions to imagine that I'm pressing either v or V right before the motion. So I imagine d^ to be equivalent to v^d and I imagine d_ to be equivalent to V_d or V^d. Of course, you can also override a motion to force it to be linewise or characterwise. So dv_ is actually exactly the same as d^ or v^d, and dVw is like Vwd which is exactly like d_.
The reason it is specifically the "count-1th" line is so that 1dd (which is really d1_) deletes one entire line, 2dd (which is really d2_) deletes 2 entire lines, 3dd deletes 3 entire lines, etc.
1
All right, but would I ever actually use it?ddis easier thand_and3yjis easier than4y_.
– Toothrot
Apr 25 at 18:02
5
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
Apr 25 at 18:07
5
@Toothrot I guess I want to clarify that a little bit. In day to day vim editing, no it's really not particularly useful. I've almost never used it either. The reason it's useful is because it is the definition of a lot of useful commands.ddmight be more convenient thand_, but that's becauseddis just a mapping tod_. And it's also useful in vimscript.
– DJMcMayhem♦
Apr 25 at 19:24
9
Some actions that act on a "motion" may not have other shortcuts. Something like "gU_" will uppercase everything on the current line, even if the cursor is not at the start of the line.
– bmb
Apr 25 at 23:08
add a comment |
Good question!
As a motion by itself, you're right, _ is not a particularly useful key. :h _
*_*
_ <underscore> [count] - 1 lines downward, on the first non-blank
character |linewise|.
The key word here is "linewise". So if your goal is to just move the cursor, then ^, j, and + all get the job done, and there's not much point to _. But as an argument to an operator, _ is super powerful.
A lot of double-key shortcuts are actually just shortcuts for _. For example,
dd -> d_
cc -> c_
yy -> y_
Y -> y_
etc. Because it's a linewise motion, it basically selects the entire line to be operated on regardless of where your cursor starts, whereas ^ just goes from your character to the first non-blank.
It helps me when thinking about linewise vs blockwise motions to imagine that I'm pressing either v or V right before the motion. So I imagine d^ to be equivalent to v^d and I imagine d_ to be equivalent to V_d or V^d. Of course, you can also override a motion to force it to be linewise or characterwise. So dv_ is actually exactly the same as d^ or v^d, and dVw is like Vwd which is exactly like d_.
The reason it is specifically the "count-1th" line is so that 1dd (which is really d1_) deletes one entire line, 2dd (which is really d2_) deletes 2 entire lines, 3dd deletes 3 entire lines, etc.
1
All right, but would I ever actually use it?ddis easier thand_and3yjis easier than4y_.
– Toothrot
Apr 25 at 18:02
5
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
Apr 25 at 18:07
5
@Toothrot I guess I want to clarify that a little bit. In day to day vim editing, no it's really not particularly useful. I've almost never used it either. The reason it's useful is because it is the definition of a lot of useful commands.ddmight be more convenient thand_, but that's becauseddis just a mapping tod_. And it's also useful in vimscript.
– DJMcMayhem♦
Apr 25 at 19:24
9
Some actions that act on a "motion" may not have other shortcuts. Something like "gU_" will uppercase everything on the current line, even if the cursor is not at the start of the line.
– bmb
Apr 25 at 23:08
add a comment |
Good question!
As a motion by itself, you're right, _ is not a particularly useful key. :h _
*_*
_ <underscore> [count] - 1 lines downward, on the first non-blank
character |linewise|.
The key word here is "linewise". So if your goal is to just move the cursor, then ^, j, and + all get the job done, and there's not much point to _. But as an argument to an operator, _ is super powerful.
A lot of double-key shortcuts are actually just shortcuts for _. For example,
dd -> d_
cc -> c_
yy -> y_
Y -> y_
etc. Because it's a linewise motion, it basically selects the entire line to be operated on regardless of where your cursor starts, whereas ^ just goes from your character to the first non-blank.
It helps me when thinking about linewise vs blockwise motions to imagine that I'm pressing either v or V right before the motion. So I imagine d^ to be equivalent to v^d and I imagine d_ to be equivalent to V_d or V^d. Of course, you can also override a motion to force it to be linewise or characterwise. So dv_ is actually exactly the same as d^ or v^d, and dVw is like Vwd which is exactly like d_.
The reason it is specifically the "count-1th" line is so that 1dd (which is really d1_) deletes one entire line, 2dd (which is really d2_) deletes 2 entire lines, 3dd deletes 3 entire lines, etc.
Good question!
As a motion by itself, you're right, _ is not a particularly useful key. :h _
*_*
_ <underscore> [count] - 1 lines downward, on the first non-blank
character |linewise|.
The key word here is "linewise". So if your goal is to just move the cursor, then ^, j, and + all get the job done, and there's not much point to _. But as an argument to an operator, _ is super powerful.
A lot of double-key shortcuts are actually just shortcuts for _. For example,
dd -> d_
cc -> c_
yy -> y_
Y -> y_
etc. Because it's a linewise motion, it basically selects the entire line to be operated on regardless of where your cursor starts, whereas ^ just goes from your character to the first non-blank.
It helps me when thinking about linewise vs blockwise motions to imagine that I'm pressing either v or V right before the motion. So I imagine d^ to be equivalent to v^d and I imagine d_ to be equivalent to V_d or V^d. Of course, you can also override a motion to force it to be linewise or characterwise. So dv_ is actually exactly the same as d^ or v^d, and dVw is like Vwd which is exactly like d_.
The reason it is specifically the "count-1th" line is so that 1dd (which is really d1_) deletes one entire line, 2dd (which is really d2_) deletes 2 entire lines, 3dd deletes 3 entire lines, etc.
answered Apr 25 at 17:55
DJMcMayhem♦DJMcMayhem
11.6k12963
11.6k12963
1
All right, but would I ever actually use it?ddis easier thand_and3yjis easier than4y_.
– Toothrot
Apr 25 at 18:02
5
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
Apr 25 at 18:07
5
@Toothrot I guess I want to clarify that a little bit. In day to day vim editing, no it's really not particularly useful. I've almost never used it either. The reason it's useful is because it is the definition of a lot of useful commands.ddmight be more convenient thand_, but that's becauseddis just a mapping tod_. And it's also useful in vimscript.
– DJMcMayhem♦
Apr 25 at 19:24
9
Some actions that act on a "motion" may not have other shortcuts. Something like "gU_" will uppercase everything on the current line, even if the cursor is not at the start of the line.
– bmb
Apr 25 at 23:08
add a comment |
1
All right, but would I ever actually use it?ddis easier thand_and3yjis easier than4y_.
– Toothrot
Apr 25 at 18:02
5
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
Apr 25 at 18:07
5
@Toothrot I guess I want to clarify that a little bit. In day to day vim editing, no it's really not particularly useful. I've almost never used it either. The reason it's useful is because it is the definition of a lot of useful commands.ddmight be more convenient thand_, but that's becauseddis just a mapping tod_. And it's also useful in vimscript.
– DJMcMayhem♦
Apr 25 at 19:24
9
Some actions that act on a "motion" may not have other shortcuts. Something like "gU_" will uppercase everything on the current line, even if the cursor is not at the start of the line.
– bmb
Apr 25 at 23:08
1
1
All right, but would I ever actually use it?
dd is easier than d_ and 3yj is easier than 4y_.– Toothrot
Apr 25 at 18:02
All right, but would I ever actually use it?
dd is easier than d_ and 3yj is easier than 4y_.– Toothrot
Apr 25 at 18:02
5
5
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
Apr 25 at 18:07
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
Apr 25 at 18:07
5
5
@Toothrot I guess I want to clarify that a little bit. In day to day vim editing, no it's really not particularly useful. I've almost never used it either. The reason it's useful is because it is the definition of a lot of useful commands.
dd might be more convenient than d_, but that's because dd is just a mapping to d_. And it's also useful in vimscript.– DJMcMayhem♦
Apr 25 at 19:24
@Toothrot I guess I want to clarify that a little bit. In day to day vim editing, no it's really not particularly useful. I've almost never used it either. The reason it's useful is because it is the definition of a lot of useful commands.
dd might be more convenient than d_, but that's because dd is just a mapping to d_. And it's also useful in vimscript.– DJMcMayhem♦
Apr 25 at 19:24
9
9
Some actions that act on a "motion" may not have other shortcuts. Something like "gU_" will uppercase everything on the current line, even if the cursor is not at the start of the line.
– bmb
Apr 25 at 23:08
Some actions that act on a "motion" may not have other shortcuts. Something like "gU_" will uppercase everything on the current line, even if the cursor is not at the start of the line.
– bmb
Apr 25 at 23:08
add a comment |
Thanks for contributing an answer to Vi and Vim Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fvi.stackexchange.com%2fquestions%2f19745%2fwhy-is-the-underscore-command-useful%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown