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(`
Is it acceptable to use working hours to read general interest books?
Nails holding drywall
Crossed out red box fitting tightly around image
How much of a wave function must reside inside event horizon for it to be consumed by the black hole?
Do I need to watch Ant-Man and the Wasp and Captain Marvel before watching Avengers: Endgame?
Was Dennis Ritchie being too modest in this quote about C and Pascal?
What *exactly* is electrical current, voltage, and resistance?
What is this word supposed to be?
Drawing a german abacus as in the books of Adam Ries
Unknown code in script
Creating a chemical industry from a medieval tech level without petroleum
Restricting the options of a lookup field, based on the value of another lookup field?
Retract an already submitted recommendation letter (written for an undergrad student)
Combinatorics problem, right solution?
As an international instructor, should I openly talk about my accent?
Does a large simulator bay have standard public address announcements?
Can a stored procedure reference the database in which it is stored?
Multiple fireplaces in an apartment building?
A Note on N!
"The cow" OR "a cow" OR "cows" in this context
Where was the County of Thurn und Taxis located?
How much cash can I safely carry into the USA and avoid civil forfeiture?
Why did C use the -> operator instead of reusing the . operator?
Philosophical question on logistic regression: why isn't the optimal threshold value trained?
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 6 hours ago
Toothrot
asked 6 hours ago
ToothrotToothrot
1,504517
1,504517
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.
All right, but would I ever actually use it?dd
is easier thand_
and3yj
is easier than4y_
.
– Toothrot
6 hours ago
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
6 hours ago
@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 thand_
, but that's becausedd
is just a mapping tod_
. And it's also useful in vimscript.
– DJMcMayhem♦
4 hours ago
2
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
1 hour ago
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.
All right, but would I ever actually use it?dd
is easier thand_
and3yj
is easier than4y_
.
– Toothrot
6 hours ago
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
6 hours ago
@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 thand_
, but that's becausedd
is just a mapping tod_
. And it's also useful in vimscript.
– DJMcMayhem♦
4 hours ago
2
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
1 hour ago
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.
All right, but would I ever actually use it?dd
is easier thand_
and3yj
is easier than4y_
.
– Toothrot
6 hours ago
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
6 hours ago
@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 thand_
, but that's becausedd
is just a mapping tod_
. And it's also useful in vimscript.
– DJMcMayhem♦
4 hours ago
2
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
1 hour ago
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 6 hours ago
DJMcMayhem♦DJMcMayhem
11.4k12862
11.4k12862
All right, but would I ever actually use it?dd
is easier thand_
and3yj
is easier than4y_
.
– Toothrot
6 hours ago
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
6 hours ago
@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 thand_
, but that's becausedd
is just a mapping tod_
. And it's also useful in vimscript.
– DJMcMayhem♦
4 hours ago
2
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
1 hour ago
add a comment |
All right, but would I ever actually use it?dd
is easier thand_
and3yj
is easier than4y_
.
– Toothrot
6 hours ago
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
6 hours ago
@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 thand_
, but that's becausedd
is just a mapping tod_
. And it's also useful in vimscript.
– DJMcMayhem♦
4 hours ago
2
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
1 hour ago
All right, but would I ever actually use it?
dd
is easier than d_
and 3yj
is easier than 4y_
.– Toothrot
6 hours ago
All right, but would I ever actually use it?
dd
is easier than d_
and 3yj
is easier than 4y_
.– Toothrot
6 hours ago
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
6 hours ago
@toothrot If you were creating your own operator and wanted to operate on the next n lines.
– DJMcMayhem♦
6 hours ago
@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♦
4 hours ago
@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♦
4 hours ago
2
2
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
1 hour ago
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
1 hour ago
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