At first Logseq feels almost exactly like Roam, but there are some important differences. I wanted to document them all here, to help other former Roam users like myself.
Case insensitive links
Roam treats “Apple” and “apple” differently, but Logseq does not. Both will point to the same page.
Roam still hasn’t implemented aliases, but Logseq has them. You can write:
alias:: granny smith on the page [[apple]] - as the first block - and then link to that page as [[granny smith]] and it will go to the same page.
You can also do multiple aliases:
alias:: granny smith, golden delicious, macintosh
Tasks and Todos
Logseq has a much more full featured task management interface built-in. Here are the official instructions on how to use it.
The query syntax is very different in Logseq. Here are instructions on how to use simple queries. There are also advanced queries which have a very different syntax.
Being case-unaware is a big plus for me. For example, when typing names sometimes one varies between upper and lower case initial letters.
I love it. It was one of the things that convinced me to switch!
Attributes vs. Properties
There are some differences with how “properties” (what Roam calls “attributes”) work in Logseq. The first is that they can be for a page (in which case they must be in the first block on the page) or for a block. You can query these properties using a special query syntax. The format and search syntax are all explained here.
If you are comfortable with early alpha software and are a developer, you can execute Roam queries on Markdown files and folders using tree-query.
Note that tree-query is not yet integrated with logseq and at the moment binaries are not available; you must compile it yourself.
Yes, being case-insensitive is a plus for me too.
This works halfway for me. When I create an alias:: apple on the page of macintosh, for example, and then somewhere else I have #apple - when I click that I come to the apple page, though the linked references will show both apple and macintosh references. However, unlinked references will only show apple. Ditto for macintosh. Better than Roam though.
Ideally a fully lowercase query should default to case-insensitive, but if the query has capitals they should be matched.
That would be a disaster for me. Either one is making use of case in a meaningful way or one is not. If you are not, then your tags are probably widely inconsistent with regard to case. However, I do know (based on my discussions with Roam users) that a significant (if small) group of people use case in a consistent and meaningful way. It would be nice if some kind of case sensitivity could be an option for such users - perhaps as a system setting.
Logseq also provides a standard query that gathers all open todo’s on today’s journal page, which Roam has no equivalent. If you’re coming from Roam, it may be mistaken for actual todos, but they are pointers back to the pages that were queried.
The absence of the left shortcut bar is jolting for some. In logseq it is combined with the Contents (or Favorites) view, where you can save/shortcut any pages to.
Anyone have a tip for transitioning from :: tags in Roam? I used the double colon after a word to create a tag extensively and it looks like Logseq uses :: for properties rather than a tag. I have imported my database from Roam and everything works beautifully except for this.
Because Logseq keeps everything in plain text files, you can use an external editor to batch edit your database. Careful though, best to keep a backup before you do this! I don’t know your setup, but I recommend the multi-file search and replace tool in BBEdit as a way to do this. If you aren’t using any properties yet, you can simply replace all instances of “::” with “:”. If you need to put everything after the : in double brackets that will be more work, but it could be done with RegEx commands.
Thanks, this is what I figured, if anyone has a regex tip for this I would appreciate it, I’ve always been horrible at Regex, just can’t wrap my mind around it!
If you DM me some sample text I can give it a try. Ideally a whole page (or several) so that I can be sure the RegEx doesn’t change anything else by accident.
I can’t believe I’m going to attempt this, but here goes:
That should replace
It depends on the program you’re using to make the replacement, however. Some would replace with