Links
Link to one of your posts
Section titled “Link to one of your posts”Ctrl+Shift+K links to another post without leaving the keyboard.
- Select the text you want to become the link, or leave nothing selected to use the post’s title.
- Press Ctrl+Shift+K, or right-click and choose Link….
- Type part of the post’s title and press Enter.
It works the same from the command palette: choose Link to an entry, and the list opens for you to search.
Edit a link
Section titled “Edit a link”Clicking a link follows it, as in Obsidian. To edit one, put the cursor next to it with the arrow keys, or click just past its end. The link’s Markdown appears, and while it shows, clicking inside the link places the cursor instead of following it. Ctrl-click follows a link at any time.
How links are written
Section titled “How links are written”Zeku writes a link to one of your pages the way your pages already link to each other, read from the posts you changed most recently:
| Form | Example | Works on |
|---|---|---|
| Page address | [text](/blog/my-post/) |
Every Astro site. The default when your pages don’t link to each other yet. |
| Path from the content folder | [text](blog/my-post/index.md) |
Sites with a plugin that turns these into addresses, as Vault CMS sites have. Obsidian follows them too. |
| Path from the page | [text](../my-post/index.md) |
Sites with a plugin that turns .md links into addresses |
Wikilinks in those posts count toward the path from the content folder, so on a site written in Obsidian, Zeku writes Markdown links that Obsidian follows.
To choose one yourself, open Settings > Content and set Links to pages. The choice is saved to .zeku/config.json, so it travels with your site. The link picker starts on your site’s form and has a switch at the bottom for a single link.
Link as you type
Section titled “Link as you type”Type [text]( and Zeku lists your pages. Keep typing to narrow the list by title, URL or path, then press Enter to fill in the link in your site’s form.
Typing [[ lists the same pages, a quick way in if you’re used to Obsidian. Picking one writes a Markdown link, [Title](/blog/my-post/) or [Title](blog/my-post/index.md) depending on how your site links. Zeku doesn’t write wikilinks.
Link to anything else
Section titled “Link to anything else”- Ctrl+K wraps the selection in
[text]()and puts the caret where the URL goes. - Paste a URL while text is selected, and the text becomes a link to it.
- Copy heading link in the command palette copies a link to the heading the caret is in, with the anchor your site generates for it.
Renaming keeps links working
Section titled “Renaming keeps links working”When you rename or move a post, Zeku updates the links to it across your site:
- A page URL link follows the post to its new URL, so
/blog/old-name/becomes/blog/new-name/. If the post sets its URL with aslugfield, its URL doesn’t change, and neither do the links. - A file path link gets the new path.
- A wikilink gets the new name.
When the rename changes the post’s slug and your site keeps redirects, meaning its schema declares the field or its posts already use it, Zeku also adds the old slug to the post’s redirects field, so the theme can send old links to the new page. On a site without one, Zeku says the old address will stop working instead. If your site reads the field without declaring it, or you’d rather Zeku never wrote it, choose under Redirects on rename in Settings > Content. Change the field name in Settings > Usability > Redirect frontmatter key.
A post stored as index.md inside its own folder is renamed by renaming the folder. When that folder holds other posts too, the slug can’t be changed this way, because they would move with it. Rename the folder from the file tree if that’s what you want. Renaming a folder that your content.config.ts loads a collection from asks first, since the collection’s posts drop off your site until the config names the new folder.
On Windows, a running dev server holds open the folders of the posts it has shown, and Windows won’t rename a folder that’s held open. When the site preview’s own dev server is the one holding it, Zeku stops it, renames the folder, and starts it again. When another program holds it, such as a dev server you started in a terminal, Zeku says so. Stop that program and try again.
Broken links
Section titled “Broken links”Zeku underlines a link to a page your site doesn’t have, such as a post you renamed or deleted, and Publish warns you before a post with one goes live. Hover over the underline to see why.
Zeku judges only links under a collection’s own address, such as /blog/..., because it knows every post in a collection. Pages from src/pages, tag archives, and files in public/ aren’t part of your content, so links to them are never flagged.
The Links tab of the right panel lists the open post’s links, and flags any that point at a file that doesn’t exist. The SEO audit checks internal links too.
Links to headings
Section titled “Links to headings”Type [text](# to link to a heading on the same page. Zeku lists the page’s headings with the ids your site gives them, numbering a repeated heading the way the site does. A link to an anchor that no heading has gets the broken-link underline. Ids you set yourself, as {#id} or with an HTML id, count too.
Copy a page’s live address
Section titled “Copy a page’s live address”If your astro.config sets site to your site’s address, directly or from a value it imports from another file, Copy live URL in the command palette copies the full address of the page you have open, and Open on the live site opens it in your browser. The dashboard’s right-click menu has Copy live URL too.