Missing, but helpful commands, views & features for Logseq
Designed to be very productive with keyboard ❤️
ℹ️ Some commands has default shortcut and some not.
To find out the shortcut for the particular command (or bind your own) use this instruction.
Any command could be called from Commands Palette, but consider this Logseq bug.
❗️ Some parts of this plugin heavily rely on Logseq's Document Object Model (DOM) structure. This means that every Logseq update could potentially break specific plugin functions. If you notice anything unusual, please create an issue with details.
⚠️ GitHub may need some time to load all demo animations (GIF) in collapsed blocks on this page.
1) ⛓️ Features
TAB-trigger on Search
To fill the input with selected search item. Just press the tab key to speed up the input values.
Fast access to current page name on Search
Helpfull, when you need to access subpages of the current page. Just press the ← arrow key on empty search input.
Go to the block start (end) with double-pressing the «Home» («End») key
Just like in Sublime Text editor. MacOS's ⌘ ← / ⌘ → and Windows's fn ← / fn → are also supported.
Restriction: This feature only works for natural lines of block, which have a «new line» character or «\n». It does not work with lines created due to the size of the layout. In such cases, the only way to proceed is to press Esc to exit edit mode and then use the ← or → arrow key to re-enter it.
Spare space between 1-level blocks
Increase the space between 1-level blocks in order to clearly separate them from each other.
Motivation: blocks on the first level represent the most general parts of the information, which usually stand separately: headings, categories, clients, code snippets, links, etc.
Edit block on mouse click on page reference or tag with ⌥ (or Alt for Windows) key
Restriction: this feature only works for the first page reference or tag. There is no way to recognize the others if they are the same.
2) 🔧 Blocks reordering
Toggle auto heading
Without accessing block context menu.
Sort / reverse / shuffle blocks
Note: To sort in descending order use sort and then reverse commands.
Note: Sort and reverse commands available via block context menu. Shuffle command only via Command Palette
3) 🔧 Fast navigation
Go to (↑) previous / (↓) next block
Instantly goes to next / prev block. Even with multiline blocks.
Note: cursor position saves from block to block.
before & after
Go to (↖︎) parent / (↘︎) last child block
Navigating whole block tree throught diagonal — jumping between the parent and the last child block.
Go to |↑| previous / |↓| next sibling block
Jumping between sibling blocks only.
Note: cursor position saves from block to block.
Note: we cannot leave current parent.
Note: the difference from prevous command is skipping all child blocks.
4) 🔧 Blocks movements
Outdent (⇤) children of the block
Perform outdent (indent to the left) for every child of the particular block.
Note: standard Logseq commands ⇧⇥ can acheive this, but it required to select all child blocks manually one by one before using it.
Move block (⤒) on top / (⤓) on bottom of siblings
Instantly makes block the first (or the last) child of the parent.
Note: standard Logseq commands ⌘⇧↑ or ⌘⇧↓ can acheive this, but via one step at a time.
5) 🔧 Splitting & Joining blocks
Magic Split & Magic Join
Search block content for ordered / unordered lists and split it to corresponding blocks structure.
Note: supported numeration style: 1.1)(1)1.2) for arabic & roman numbers and letters from alphabet.
Note: supported bullets style: -+*.
Split & Join
Split by lines / Join via new lines
Simple command to pick out each line of block to separate block (and vica-versa).
Note: There are two types of join command: with respect to block structure and without it.
Split & Join
Split by words / Join via spaces
Get all words from the text and place it at the separate blocks (and vice-versa).
Note: Words could contain letters, ', _ & - characters.
Split & Join
Split by commas or semicolons / Join via commas
Split the text by commas (or semicolons with the separate command).
Join separate blocks via commas.
Note: Joining can respect the root node with colon «:».
Split / Join sentences
Split paragraph of text by sentences (one block = one sentence). And join the blocks to single paragraph.
Note: Split removes the dots at the end. Join returns the dots back.
Apply various formatting in a smart way: auto-select whole words, recognize Logseq special syntax, smart undo formatting, and work out of editing mode.
To use it in edit mode:
Go to the Keymap (g s) → Formatting section and replace standard Logseq commands (Bold, Highlight, Italics, Strikethrough) with magic ones.
Bind Magic underline, Magic `code`, Magic [[reference]], Magic #tag and Magic "quotes" commands to shortcuts of your choice (e.g. ⌘U, ⌥~, etc.).
Note: command uses «_» for italics to prevent this cases.
Remove new lines
Remove all «new line» characters from text. Helpful for work with OCR texts.
Note: command adds spaces when it's necessary.
Trim lines punctuation ". , ;"
Remove any of «. , ;» characters from the end of every line of text.
Note: command removes only one punctuation character.
Lower / upper / title letters case
Note: title case command has two variations — title words and title sentences.
Remove HTML tags
Remove all HTML tags from the block, leaving only the text content.
Note: there is no exceptions — everything between «<» and «>» will be removed.
Parse YouTube timestamps
Transform copied from YouTube timestamps to Logseq format.
7) 🔭 Views
Hide references started with «.»
Hide any page and tag references that start with the dot: «.», assuming that these are special reserved references that do not need to be shown.
Note: there are two ways of hiding:
Hide by wrapping to «…» only & Hide completely and show on block hover
Tabular view
Use the #.tabular reference in a block to apply a Tana-like tabular view for all its children.
Note: it could be nested — #.tabular inside another #.tabular. However, only two-level depth is supported.
Use the #.tabular0 reference in another tabular row to skip the immediate children.
Use the #.tabular0 reference to hide heading block.
FAQ: How to return back double square brackets for page references in the left column?
Use the #.columns reference to organize child blocks to columns of the same width. Note: 1 column = 1 block.
Use the #.columns-N reference to organize child blocks to N columns of the same width, where N = 2…6. Note: 1 column = 1 or more blocks.
Use the #.columns-fit reference to organize child blocks to columns with different width (based on content). Note: 1 column = 1 block.
Gallery view
Use the #.gallery reference to organize child blocks containing images to gallery. Note: image sizes automatically fills whole space for width. There is only one row of images.
Use the #.gallery-wN reference to organize child blocks containing images as fixed-width (based on N) images. Note: there can be multiple rows of images.
Use the #.gallery-hN reference to organize child blocks containing images as fixed-height (based on N) images. Note: there can be multiple rows of images.
Border view
Use the #.border & #.border-child references to organize borders around the blocks. Note: these references can be combined.
If you ❤️ what I'm doing — consider to support my work
Installation
From Logseq Marketplace (recommended way):
Click «...» and open the «Plugins» section (or press t p)
Click on the «Marketplace»
On the «Plugins» tab search for «Missing Commands & Views» plugin and click install
If you want to change default shortcuts commands — go to «Keymap» (g s)
Manual way (in case of any troubles with recommended way)
In Logseq: Enable «Developer mode» in «...» → «Settings» → «Advanced»
Download the latest plugin release in a raw .zip archive from here
Unzip it
In Logseq: Go to the «...» → «Plugins», click «Load unpacked plugin» and point to the unzipped plugin folder
⚠️ The important point here is: every new plugin release should be updated manually
FAQ
Any command from the Command Palette doesn't work! Why?
The reason is the bug in Logseq's interaction with the Command Palette:
If you select the command with your mouse, it cannot detect the currently selected blocks or the currently editing block.
If you select the command with your keyboard (using Enter), it cannot detect the currently editing block, but it can detect the currently selected blocks.
If you want to execute a particular command for the currently editing block — bind a shortcut to it.
How to change default shortcut for the particular command?
Open «Settings» → «Keymap» (or press g s).
Copy this emoji «🪚» (for Windows use «🔪») and insert it to search input.
Change any shortcut you want
Why I cannot revert the result of particular command with one Undo action?
This is a restriction of the Logseq API: there is no way to execute complex commands in a single Undo. Therefore, the plugin attempts (when it makes sense) to minimize the count of Undo actions by removing the entire block tree instead of removing each block independently.
Why there is strange «ø» charactear appears sometimes during Undo command?
The reason is this bug in Logseq plugin API. The plugin uses «ø» character intentionally as a workaround for this issue. When the bug is resolved, this workaround will no longer be necessary.