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?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(`

SSD or HDD for server

Why are KDFs slow? Is using a KDF more secure than using the original secret?

Are there any rules around when something can be described as "based on a true story"?

Fill a bowl with alphabet soup

Can you take Bowwow out after returning him to MeowMeow?

Sum in bash outside while read line

C4_4 Reflection!

Why are Starfleet vessels designed with nacelles so far away from the hull?

Is Having my Players Control Two Parties a Good Idea?

My professor says my digit summing code is flawed. Is he right?

A Grandma Riddle

Why does 1.1.1.1 not resolve archive.is?

How can I attach a set of five panniers?

How is the corresponding author on a (math) paper typically chosen?

Proofreading a novel: is it okay to use a question mark with an exclamation mark - "?!"

I'm not alive, but I can be lively

Delete line if next line is the same

'Kukhtarev's model' or 'THE Kukhtarev's model'?

Did smallpox emerge in 1580?

Is consistent disregard for students' time "normal" in undergraduate research?

How do I weigh a kitchen island to determine what size castors to get?

5v home network

Slow coworker receiving compliments while I receive complaints

Can Slack really claim not to be a data controller?



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?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(`






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty
margin-bottom:0;









15

















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 ^?










share|improve this question


































    15

















    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 ^?










    share|improve this question






























      15












      15








      15








      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 ^?










      share|improve this question
















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question



      share|improve this question








      edited Apr 25 at 17:54







      Toothrot

















      asked Apr 25 at 17:29









      ToothrotToothrot

      1,4766 silver badges19 bronze badges




      1,4766 silver badges19 bronze badges























          1 Answer
          1






          active

          oldest

          votes


















          16


















          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.






          share|improve this answer





















          • 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






          • 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. 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





            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





            @bmb What about gUU? I think it would be worthwhile to find an actual example where <operator>_ would be used.

            – Hotschke
            May 15 at 18:08












          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/4.0/"u003ecc by-sa 4.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
          );



          );














          draft saved

          draft discarded
















          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









          16


















          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.






          share|improve this answer





















          • 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






          • 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. 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





            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





            @bmb What about gUU? I think it would be worthwhile to find an actual example where <operator>_ would be used.

            – Hotschke
            May 15 at 18:08















          16


















          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.






          share|improve this answer





















          • 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






          • 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. 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





            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





            @bmb What about gUU? I think it would be worthwhile to find an actual example where <operator>_ would be used.

            – Hotschke
            May 15 at 18:08













          16














          16










          16









          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.






          share|improve this answer














          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.







          share|improve this answer













          share|improve this answer




          share|improve this answer



          share|improve this answer










          answered Apr 25 at 17:55









          DJMcMayhemDJMcMayhem

          12k3 gold badges31 silver badges67 bronze badges




          12k3 gold badges31 silver badges67 bronze badges










          • 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






          • 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. 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





            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





            @bmb What about gUU? I think it would be worthwhile to find an actual example where <operator>_ would be used.

            – Hotschke
            May 15 at 18:08












          • 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






          • 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. 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





            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





            @bmb What about gUU? I think it would be worthwhile to find an actual example where <operator>_ would be used.

            – Hotschke
            May 15 at 18: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




          1




          1





          @bmb What about gUU? I think it would be worthwhile to find an actual example where <operator>_ would be used.

          – Hotschke
          May 15 at 18:08





          @bmb What about gUU? I think it would be worthwhile to find an actual example where <operator>_ would be used.

          – Hotschke
          May 15 at 18:08


















          draft saved

          draft discarded















































          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.




          draft saved


          draft discarded














          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





















































          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









          Popular posts from this blog

          Tamil (spriik) Luke uk diar | Nawigatjuun

          Align equal signs while including text over equalitiesAMS align: left aligned text/math plus multicolumn alignmentMultiple alignmentsAligning equations in multiple placesNumbering and aligning an equation with multiple columnsHow to align one equation with another multline equationUsing \ in environments inside the begintabularxNumber equations and preserving alignment of equal signsHow can I align equations to the left and to the right?Double equation alignment problem within align enviromentAligned within align: Why are they right-aligned?

          Training a classifier when some of the features are unknownWhy does Gradient Boosting regression predict negative values when there are no negative y-values in my training set?How to improve an existing (trained) classifier?What is effect when I set up some self defined predisctor variables?Why Matlab neural network classification returns decimal values on prediction dataset?Fitting and transforming text data in training, testing, and validation setsHow to quantify the performance of the classifier (multi-class SVM) using the test data?How do I control for some patients providing multiple samples in my training data?Training and Test setTraining a convolutional neural network for image denoising in MatlabShouldn't an autoencoder with #(neurons in hidden layer) = #(neurons in input layer) be “perfect”?