The ideal UX, in my opinion, is what pasting detects URL from the clipboard and does its magic. For example, before paste:

After paste:

The next preferred method is a keyboard shortcut like here on GitHub. I select text, press a keyboard shortcut (Ctrl+K would be ideal but that one is taken by VSCode so probably Ctrl+L which is the second most popular shortcut for MD links in various editors) and get this:

I can then paste the URL which is in my clipboard.
Thanks for this awesome extension!
UPDATE 06/2019 for anyone reading this:
Ctrl+L / Cmd+L to insert links, one can define a custom snippet in keybindings.json: https://github.com/yzhang-gh/vscode-markdown/issues/20#issuecomment-318393965Good suggestion
I find that we cannot get the text from clipboard using vscode APIs. So we cannot detect if the text is an URL.
I'm going to adopt the second method ctrl+l.
But there must be an upstream issue contributing snippets with arguments.
If you would like to try it, just add this to you Markdown keybindings (Menu>File>Preferences>Keyboard Shortcuts>advanced customizations->open keybindings.json),
{
"command": "editor.action.insertSnippet",
"args": "[$TM_SELECTED_TEXT]($0)", // not correct, see the updated snippet in discussion below
"key": "ctrl+l",
"mac": "cmd+l",
"when": "editorTextFocus && editorLangId == markdown"
}
It gives me this palette:

Is this expected? When I select _Insert link_, it works as expected but I thought it would insert the link syntax straight away.
But thanks for the tip anyway!
Are you using vscode insider version?
I think it might be a bug of insider version because v1.14.1 (stable) inserts link syntax directly.
I'm on 1.14.2, Windows 10.
This works for me:
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "[$TM_SELECTED_TEXT]($0)"
},
"key": "ctrl+l", // or "cmd+l" on Mac
"when": "editorTextFocus && editorLangId == 'markdown'"
}
Oops, my fault
This is my setting

BTW, this is the upstream issue vscode #31372 preventing this extension to configure the keybinding out-of-box for you.
But it seems to have a low priority... You can vote for this.
Upvoted, thanks.
By any chance, doesn't VSCode API provide access to clipboard today, compared to last year? This would still be a great feature to have :)
I was also thinking if it would be possible to paste regardless of clipboard contents and then retrospectively look at what it was: if a URL, keep it, if something else, revert it. If this happened very quickly, maybe I wouldn't able to notice as a user? But maybe this would be problematic for larger blocks of text in the clipboard, I don't know.
Not a good news but you can find more information here.
Thanks, very useful!
The workaround doesn't seem very feasible, does it?
The information I got from that comment is that
1) vscode team has no interest in it,
2) no satisfactory workaround now ...
I meant this:
I was also thinking if it would be possible to paste regardless of clipboard contents and then retrospectively look at what it was: if a URL, keep it, if something else, revert it. If this happened very quickly, maybe I wouldn't able to notice as a user? But maybe this would be problematic for larger blocks of text in the clipboard, I don't know.
In fact, we can watch for any text changes (no matter it is a pasting or normal typing) and do something. I think it is feasible. But one concern is there will be a noticeable two consecutive edits.
Finally we get it. Please try out the dev build.

@yzhang-gh works like a charm! 🎉
The feature is great, but it is not clear from the gif that you are doing the selection in the insert mode. I spent half an hour trying to see if there was other keybinding conflicts. Since the source code for keybinding is different from what you have above with editorHasSelection, it would be helpful to add that detail in the README.md
it is not clear from the gif that you are doing the selection in the insert mode
Sorry, I don't get the point. Are you using the Vim extension?
I assumed the short text above the gif "Paste link on selected text" is enough.
Yes I am using that vim extension. It could be just me. You happen to have syntax highlighting on previous gif for current line the same color as the selected text color, hence the confusion. Coming from vanilla vim, text selection in insert mode was a new concept for me..
I've updated the OP with clarification about the status of this issue as of today.
Most helpful comment
Finally we get it. Please try out the dev build.