Jane Wayne
Jane Wayne

Reputation: 8855

How do I go to the end of a line in VS code without using the mouse or some key combinations?

I am using VS Code to write some HTML. I noticed that the IDE will auto-insert some code for me. For example, if I want a <p> tag, VS Code will create <p></p> for me and the cursor will land in the middle (between the opening and closing paragraph tags). However, when I am done typing the content inside the <p> tags, typically, I use my mouse or the directional right-arrow to move to the end. Is there a way to not move my fingers from the typing positions (e.g. fdsa and jkl;) to go to the end of the line or tag, or would I always have to use the mouse or directional pad?

I find IDEs like what JetBrains provide do not have this limitation for certain languages. For example, in Python, if I want to print something using PyCharm, I can type (the closing single quote and right parenthesis are auto-added)

print('')

My cursor will land inside the single quotes. To simply get outside the closing parenthesis, I simply type in ' followed by ) and the IDE is smart enough to know to not place the single quote and closing parenthesis there (it's like using the right arrow twice to get outside the print statement).

WebStorm, like VS Code, has the "problem" when dealing with HTML. If I am inside an opening and closing <p> tag, and right next to the closing one </p>, simply typing <, /, p, > will not land me outside (as with Python and PyCharm). On Windows, I can press the End key or on Mac I can press fn+right to get to the end; but that requires breaking the flow and continuity of my hands in the typing positions (eyes have to be redirected too).

Any tips on how to be a more productive coder using VS Code or other modern IDEs with HTML? Are there plugins that we may use to address this problem?

Upvotes: 39

Views: 122924

Answers (15)

user658182
user658182

Reputation: 2350

I decided a long time ago to master a single editor. Vi / Vim are practically ubiquitous, and with that said, there is an excellent Vim emulator extension for VS Code so switching from the terminal to VS Code on any operating system is seamless. Vi / Vim, IMO, has superior navigation that works on any keyboard without the need for special keys or even directional arrows. h j k l are your best friends.

You can use Shift + A (Append) to move to the end of the line and switch to editing mode. To jump to the last non-blank character, you can press g then Shift + _ keys.

Use I (Insert mode at beginning of line) to do the opposite of A, move to and begin editing at the beginning of a line. Pressing just the ^ will place your cursor at the first non-white-space character of the line as well.

Remember to always hit the esc key to exit editing mode and navigate around.

Using the Vim extension in VS Code you still have access to VSC's other powerful formatting, key binding, and navigational tools. To go back to using default VS Code config, simply disable the Vim extension.

Searching for "Vim navigation cheat sheet" will bring up more information than you could ever want about how to most efficiently and expertly navigate around code, but this should get you started: https://devhints.io/vim#navigating

Upvotes: 0

braveheartwilliam
braveheartwilliam

Reputation: 41

In "Preferences" "Keyboard Shortcuts" search for "cursorEnd". Click on the edit "pencil" and change the Keybinding in the popup to Tab Tab. It's tap tap on the Tab key and the cursor moves to the end of the line and your hands stay in typing position. My "End" key is not within pinky reach.

Upvotes: 4

Golam Moula
Golam Moula

Reputation: 848

It does really depend on the keyboard for my laptop it was ctrl+fn+page down

page down as in "End" in terms of fn key

Upvotes: 0

William Le
William Le

Reputation: 1171

For me it is Fn + Right Arrow Key that's the quickest possible approach

Upvotes: 27

Emil Tsvetanov
Emil Tsvetanov

Reputation: 1

I remember it to be same as in bash, zsh (Ctrl+e / Ctrl+a) respectively (End / Beginning) of the line

Upvotes: 0

Caleb Darnell
Caleb Darnell

Reputation: 1

To jump to the end of line on Mac the hotkey combo is:

Cmd + Shift + \

⌘ + ⇧ + \

This is called "Go to Bracket" in the VS Code Keyboard Shortcuts settings

Upvotes: 0

Shahjahan
Shahjahan

Reputation: 239

You can paste this code in your keybindings.json file in vs code

  • ctrl+RightArrow ....>>> for Move cursor to Line end
  • ctrl+LeftArrow ....>>> for Move cursor to Line start
  • alt+RightArrow .....>>> for moving cursor word by word
  • alt+LeftArrow ....>>> for moving cursor word by word

Just paste this code into your keybindings.json in vs code

[
{
        "key": "alt+right",
        "command": "cursorWordEndRight",
        "when": "textInputFocus && !accessibilityModeEnabled"
    },
    {
        "key": "alt+left",
        "command": "cursorWordEndLeft",
        "when": "textInputFocus && !accessibilityModeEnabled"
    },
    {
        "key": "ctrl+right",
        "command": "cursorLineEnd"
    },
    {
        "key": "ctrl+left",
        "command": "cursorLineStart"
    },
]

Make sure to adjust commas and brackets, if there is already some code.

Upvotes: 16

Jordan
Jordan

Reputation: 494

Simply go look it up or change it in your key binding settings:

File > Preferences > Keyboard shortcuts


It's named cursorLineEnd.

enter image description here

Same can be done for cursorLineStart of course.


Interfering other shortcuts can be changed or deleted as well in that menu.

Upvotes: 34

Akshay Sharma
Akshay Sharma

Reputation: 11

No need to do these messy things, just use your keyboard's home key and end key

  1. Press the home key to go to the beginning of the line

  2. Press the end key to go to the end of the line

Upvotes: 1

Mustain Billah
Mustain Billah

Reputation: 89

If you want to go to the end of a line, just press the End button on the keyboard, and press Home to go to start of a line.

Upvotes: 8

i m yoga
i m yoga

Reputation: 21

If you like to stick to the home row and do not want to use arrow keys, you can customize your keyboard shortcuts.

paste the below code to your keybindings.json file in vs code.

Feel free to customize these shortcuts by changing key combinations.

,{
    "key": "alt+l",
    "command": "cursorEnd",
    "when": "editorTextFocus"
  },
  {
    "key": "alt+j",
    "command": "cursorHome",
    "when": "editorTextFocus"
  }

Upvotes: 2

bittahProfessional
bittahProfessional

Reputation: 204

Change the key binding for cursor down to Shift + Space. I didn't remap right Arrow for reasons I'll explain shortly, but I could have easily done that as well.

When I code, I like to use indented formatting. So, when I type <p> and </p> is automatically generated, I go one step further and press ENTER. By default, that causes </p> to move to the same indention level as <p> on the line below my cursor, and puts my cursor on an indented line below <p>. Gif for reference:

Shortcut to make an indented block:

Shortcut to make an indented block

That leaves my fingers basically on the home keys, because when I'm done in that level, I'll press Shift + Space to go to the line below, where the ending tag will be, and then I can press ENTER a couple times as normal and create a new tag or whatever else I'll be adding to the file.

If you would like to set up your key bindings like mine, or do something slightly different, here is what I did:

  • Ctrl + K Ctrl + S (to open key bindings)
  • Search for "cursorDown"
  • Highlight the row and press ENTER
  • Press Shift + Space

Upvotes: 2

soulshined
soulshined

Reputation: 10592

I'm not sure which OS you specifically use being that you mentioned but an OS agnostic approach is to create your own keybind / key chord (sequence).

A key chord is essentially a way to use another 'layer' of key shortcuts, if you use your imagination for lingo. To illustrate: consider CTRL + S is a keyboard shortcut. Now consider CRTL + K chord CTRL + S, which is a completely different shortcut even though you use the same sequence.

Consider an edit/insert mode

I don't use vim, nor have I ever tried, but I really find value in the idea of having different 'modes', one visual one for insert and edit. Personally, I have elected CTRL + E to be my chord sequence for 'edit mode'. Now, every single key and sequence of keys becomes a brand new possability. Why CTRL + E? Well 'e' for edit, naturally, but also because it is default duplicate; for whatever reason vscode identifies this shortcut to be the same as CTRL + P by default.

I then use $ to go to the end of the line and ^ to the beginning, arbitrarily because of regex, but the point is you can create your own according to your own preference, which appears to be that of the home row. So if you elect to go this approach you can use j if you want. If you were to argue this is too much user input for a single action, consider the position of using a PC at home and a mac at work, as I do, you would already be comfortable with your settings and not need to 're-learn' shortcuts.

This answer uses an approach that affords you the creative freedom to define what a 'productive coder' looks like for you, provides a different approach to going to the end of line while maintaining your home row position, and hopefully demonstrates to any new vscoders that you are not bound to just using the native CTRL + K sequence as the chord identifier.

Regardless, re:

without using ... some key combinations?

That's unavoidable, I think, unless you choose to remap normal typing keys for this purpose

Upvotes: 0

wellwhynot
wellwhynot

Reputation: 97

I often just use <CTRL> + → (right arrow) a few times to quickly navigate past words and code blocks. It won't immediately get you to the end but if there isn't a ton of code after your current cursor location, a few quick uses of this keystroke can be faster than lifting your hands and checking with eyes to find the key.

Depending on what your keyboard layout is, this could be faster. Personally, if it's a big issue, I would second other posters here and add a custom keybind / hotkey to a lesser-used key nearby.

//Begin CAVEAT

I'm not mentioning just using the <END> key here as a solution purposefully, since you indicated that using that using keys too far from home row broke your flow. Depending on my keyboard layout, that is often the fastest option by far, however my current keyboard makes that a non-starter. Part of the issue here is that people's experience is so different based on what keyboard they're using, as well as hand size and dexterity. YMMV with any solutions we mention that isn't a custom keybind.

//END CAVEAT

Upvotes: 9

Cody O&#39;Dell
Cody O&#39;Dell

Reputation: 181

Cmd + Right

This will go to the end of you current line.

Tips:

  • Hold down shift to start a selection
  • Use Alt or Ctrl instead of Cmd to change the distance the cursor travels

Upvotes: 3

Related Questions