Type | while text is selected to create a link with the selected text as an alias

I’m not sure if I know good words for searching for this feature in the forum, but I tried to do a quick search.

Use case or problem

I have some text already written, and I want to select a word and then make it a link. Instead of a simple link, I want the link to have an alias, which would be the word that I have selected.

Consider the following:

  1. My text: “I have 14 cats.”
  2. I will highlight (=select) the word cats. I want to make that word to became an alias in a link.
  3. Currently, I can make the word to become a link just by typing [[. In this case, the result will be: “I have 14 [[cats]].”
    In this case, the word cats will become the name of the linked page, but instead of that, I want cats to become an alias: “I have 14 [[|cats]].” would be my preferred outcome.

Proposed solution

Typing [[ works well and I’m not suggesting any changes to that. But I have two ideas that both could be used to achieve the same goal.

A) Select some text and simply type |. It will result in [[|cats]] and it will place the cursor just before the | character so that I can then continue to write the name of the page that I want to link to. This way I could smoothly supplement the link to become [[Cat|cats]].

OR:

B) Almost the same as A, but instead of typing |, I would first type [[ to get the normal link [[cats]] (with cats still highlighted) and then I would type |, which would insert the | character, place the highlighted text at the right side of the | character, and finally place the cursor to the left side of the | character.

Current workaround

  1. Select the word cats.
  2. Type [[. Result so far: “I have 14 [[cats]].” (cats is still highlighted)
  3. Hit left key to remove the highlighting.
  4. Type |. Result so far: “I have 14 [[|cats]].” (nothing is highlighted)
  5. Hit left key again to get the cursor to the left side of the | character.
  6. Now you can finally write the page name that you want to link to, and autocompleting works too. If you would not write | before writing the page name, you could not use autocomplete, because hitting enter or tab during autocomplete would make the alias text disappear (= replaced by the autocompleted page’s name). When you have the | character in place, you won’t loose the alias text (= this works really well in Obsidian already).

I’m sorry if my post is messy. Please ask me clarification if something is unclear, I will answer gladly. Thank you for your support! :slight_smile:

6 Likes

Current workaround

Option 1: I use markdown-style links instead of wiki-links instead of [[selected alias]], by pressing “Insert Markdown link” (Ctrl+K) I get [selected alias]() with cursor between round brackets where filename belongs.
Remaining issue is that auto-complete for markdown-style links does not work yet.


Option 2: For wiki-style links, this could be solved by AutoHotkey script:

^k:: ; Ctrl+K hotkey pressed manually. 
    ; Change to your preferred hotkey. Modifiers: !^+#
  Send, {[ 2}{Left} 
    ; Enclose selected text in [[ ]] (Closing brackets autopaired by Obsidian.)
  Send, {|}{Left} 
    ; Write pipe character,  simulate left arrow to place the caret/cursor before it.
  return

The clunky way to achieve the desired result now is: select the words you want to turn into the link text, cut, type [[, enter the link title, type | and paste.

When writing in an inflectional language like Russian words and phrases keep taking different forms depending on their grammatical role in the sentence and linking can feel quite infuriating.

2 Likes

Thanks! :slightly_smiling_face:

Same with my language (Finnish), every word can have tens of different forms depending on the sentence and other words.