Settings is being invoked when expanding abbreviation in Emmet #5221

Closed
opened 2026-01-31 00:07:52 +00:00 by claunia · 5 comments
Owner

Originally created by @chiefjester on GitHub (Nov 27, 2019).

I'm using https://github.com/mattn/emmet-vim plugin for vim to expand css like selectors to actual html. To invoke Expand Abbreviation, it uses Ctrly,, unfortunately, this is picked up by Terminal and open the settings instead.

Environment

Windows build number: Microsoft Windows [Version 10.0.19030.1]   
Windows Terminal version (if applicable): 0.7.3291.0


Any other software?

Steps to reproduce

Open or create a New File:

vim index.html

Type ("_" is the cursor position):

html:5_

Then type <c-y>, (Ctrly,), and you should see:

Expected behavior

<!DOCTYPE HTML>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
	_
</body>
</html>

Actual behavior

It opens the settings profiles.json

Note: I have tried remapping the settings to use Ctrl; instead but it still open if I try to "expand abbreviation" Ctrly,

So I guess this is another form of bug, where you can't remap the settings to a different key?

Originally created by @chiefjester on GitHub (Nov 27, 2019). <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> <!-- This bug tracker is monitored by Windows Terminal development team and other technical folks. **Important: When reporting BSODs or security issues, DO NOT attach memory dumps, logs, or traces to Github issues**. Instead, send dumps/traces to secure@microsoft.com, referencing this GitHub issue. If this is an application crash, please also provide a Feedback Hub submission link so we can find your diagnostic data on the backend. Use the category "Apps > Windows Terminal (Preview)" and choose "Share My Feedback" after submission to get the link. Please use this form and describe your issue, concisely but precisely, with as much detail as possible. --> I'm using https://github.com/mattn/emmet-vim plugin for vim to expand css like selectors to actual html. To invoke Expand Abbreviation, it uses <kbd>Ctrl</kbd><kbd>y</kbd><kbd>,</kbd>, unfortunately, this is picked up by Terminal and open the settings instead. # Environment ```none Windows build number: Microsoft Windows [Version 10.0.19030.1] Windows Terminal version (if applicable): 0.7.3291.0 Any other software? ``` # Steps to reproduce Open or create a New File: ``` vim index.html ``` Type ("_" is the cursor position): ``` html:5_ ``` Then type `<c-y>,` (<kbd>Ctrl</kbd><kbd>y</kbd><kbd>,</kbd>), and you should see: # Expected behavior ```html <!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> _ </body> </html> ``` # Actual behavior It opens the settings profiles.json Note: I have tried remapping the settings to use <kbd>Ctrl</kbd><kbd>;</kbd> instead but it still open if I try to "expand abbreviation" <kbd>Ctrl</kbd><kbd>y</kbd><kbd>,</kbd> So I guess this is another form of bug, where you can't remap the settings to a different key?
claunia added the Issue-QuestionNeeds-Tag-FixResolution-AnsweredProduct-Terminal labels 2026-01-31 00:07:53 +00:00
Author
Owner

@DHowett-MSFT commented on GitHub (Nov 27, 2019):

Couple unusual things:

  1. I'm only seeing this behavior if I accidentally hit <C-y><C-,>. When I press <C-y>, I get a ^Y and a ,, as expected.
  2. You have to explicitly unbind Ctrl+, in your key bindings to suppress it. Add a binding for ctrl+, with "command": null.
@DHowett-MSFT commented on GitHub (Nov 27, 2019): Couple unusual things: 1. I'm only seeing this behavior if I accidentally hit `<C-y><C-,>`. When I press `<C-y>,` I get a `^Y` and a `,`, as expected. 2. You have to explicitly _unbind_ <kbd>Ctrl+,</kbd> in your key bindings to suppress it. Add a binding for `ctrl+,` with `"command": null`.
Author
Owner

@owennewo commented on GitHub (Nov 28, 2019):

It's undocumented (and therefore subject to change) but I reckon if you add this to your settings (profile.json) it'll work:
"keybindings": [ { "command": "openSettings", "keys": ["ctrl+shift+%"] } ]

I got the keybinding name from here:

https://github.com/microsoft/terminal/blob/master/src/cascadia/TerminalApp/AppKeyBindingsSerialization.cpp#L66

@owennewo commented on GitHub (Nov 28, 2019): It's undocumented (and therefore subject to change) but I reckon if you add this to your settings (profile.json) it'll work: ` "keybindings": [ { "command": "openSettings", "keys": ["ctrl+shift+%"] } ] ` I got the keybinding name from here: https://github.com/microsoft/terminal/blob/master/src/cascadia/TerminalApp/AppKeyBindingsSerialization.cpp#L66
Author
Owner

@zadjii-msft commented on GitHub (Dec 2, 2019):

@owennewo I'm pretty sure the openSettings key is pretty well documented:

https://github.com/microsoft/terminal/blob/master/doc/cascadia/SettingsSchema.md#L129

https://github.com/microsoft/terminal/blob/master/doc/cascadia/profiles.schema.json#L44

@zadjii-msft commented on GitHub (Dec 2, 2019): @owennewo I'm pretty sure the `openSettings` key is pretty well documented: https://github.com/microsoft/terminal/blob/master/doc/cascadia/SettingsSchema.md#L129 https://github.com/microsoft/terminal/blob/master/doc/cascadia/profiles.schema.json#L44
Author
Owner

@chiefjester commented on GitHub (Dec 5, 2019):

@DHowett

Thank you very much for your reply to answer your questions:

  1. You're right, If I press <C-,> it does open the settings, for some reason that's how I've been using it. Having the modifier (Ctrl) hold while pressing the other key combination, in this case ,.

If I press <C-y> then , it works as expected.

  1. adding command: null does unbind the command. Though I wish it unbinds itself if you assign the settings a different shortcut.

I apologize for the delayed answer and if this is a false alarm. ✌🏻

@chiefjester commented on GitHub (Dec 5, 2019): @DHowett Thank you very much for your reply to answer your questions: 1. You're right, If I press <C-y><C-,> it does open the settings, for some reason that's how I've been using it. Having the modifier (Ctrl) hold while pressing the other key combination, in this case `,`. If I press `<C-y>` <release Ctrl> then `,` it works as expected. 2. adding command: null does unbind the command. Though I wish it unbinds itself if you assign the settings a different shortcut. I apologize for the delayed answer and if this is a false alarm. ✌🏻
Author
Owner

@DHowett-MSFT commented on GitHub (Dec 5, 2019):

Thanks for following up!

wish it unbinds itself

Ah, I see. Sorry, I had a long writeup on why terminal input was annoying, but then I went back and read your request. Terminal’s bindings operate backwards from the way they seem in the settings: they really take a key first and a command second. We absolutely want people to be able to set multiple bindings for the same command—like “copy” being on C-S-c or Return or Ctrl-Ins simultaneously, for example.

Terminal largely tries to stay away from key combinations that a text-mode application could want to detect.
Now, <C-,> is an interesting case. There actually isn’t a valid encoding that an application can detect. It reads the same way as ,!

@DHowett-MSFT commented on GitHub (Dec 5, 2019): Thanks for following up! > wish it unbinds itself Ah, I see. Sorry, I had a long writeup on why terminal input was annoying, but then I went back and read your request. Terminal’s bindings operate backwards from the way they seem in the settings: they really take a key _first_ and a command second. We absolutely want people to be able to set multiple bindings for the same command—like “copy” being on C-S-c or Return or Ctrl-Ins simultaneously, for example. Terminal largely tries to stay away from key combinations that a text-mode application could want to detect. Now, `<C-,>` is an interesting case. There actually isn’t a valid encoding that an application can detect. It reads the same way as `,`!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#5221