OmniOutliner 2016 - Markdown and Find Replace

It was exciting to read about the updates coming to OO for writing in @kcase recent blog post.

  • Word Counts
  • Editing Markdown Documents
  • Full Screen / Distraction Free Writing

I’m curious how Markdown is going to work. Is it for editing documents that already exist or for creating Markdown documents from scratch with commands that you’d find in Ulysses to apply the markdown code? I don’t mind writing markdown commands. Just anxious to learn what OO can and can’t do with markdown. Or what the goal is for adding markdown features in OO.

The other question I have is if it will support export options for images?

How would you like it to work? :)

We’re considering many options, it could be interpreting styles/named style for the syntax, or editing the syntax directly. For existing MD files, it should be expected that not every file would round trip exactly the same depending on the structure used. But, we of course want to make sure we support want people want, so if you have any preferences of how things should work, please let us know!

As for images, that’s going to take some exploring to see how it would be useful in conjunction with people’s workflows. I assume you currently use local images with your Markdown files? If so, what apps do you use them with?

1 Like

What I love

I use OO to plan stories and ideas along with making lists and simple budgets. The features that keep me using OO are:

  • Aesthetics
  • Speed
  • Consistency with OmniFocus shortcuts
  • Styles
  • Copy As Link for various rows
  • Keyboard shortcuts! I fly through OO with keyboard shortcuts. I love using these so much because of how fast you can arrange data without touching the mouse.

If I’m writing long form without the need for images, I can use OO and figure out a not-so-simple-workflow exporting the data to plain text along with copying and pasting amongst apps. In the end, I’ll get what I want. A text editor is one of the apps I use in between the export process to bulk change areas in the exported plain text file. I’m mainly removing the word wrap and excess tabs.

Currently, I use Ulysses for Mac and iPhone (Beta) to write markdown files along with attaching images and links. It has great export options where you can even modify the CSS templates, and it’s also a beautiful looking app that syncs everything to iCloud. I try to use OO as the one-stop-shop, but I don’t think it’s possible at this point. I’m not sure if OO even wants to be the one-stop-shop. That’s part of the reason I wondered what the goal is for OO including Markdown. For now I start with OO for planning, then I wind up in Ulysses to write the majority of the project.

What I’m craving

  1. Multiple Selections
    I would love to see a feature like Multiple Selections from Sublime Text and many other text editors by double-clicking a word then the pressing a keyboard shortuct to select them all. From there, I can edit them all, add some extra text in those areas, then get back to flowing through my document. Also, CMD+clicking multiple cursors throughout the document to make bulk changes. This would help with lists that need a bulk change on the fly. I’m not fan of the traditional Find and Replace because I think it slows a user down to deal with the pop-over window after you find where it magically appears with multiple monitors. Multiple Selections is the primary reason I’ll use a text editor for various writing and list making tasks at times because it’s so fast. Also these features would be useful depending on what’s focused and unfocused. If I’m not dealing with images in OO, I’ll copy my entire outline to a text editor, do bulk changes, and copy it back by overwriting the entire OO document since the text editor preserves the tabs.

  2. Options for Exporting to PDF with Images
    I could be wrong on how I’m doing this, but I can only see images in my PDFs with Printing to PDF which limits the amount of options the way images would appear in the export. Some controls over this export would be amazing. For example, size and spacing of images. I could be in the minority for this one.

  3. Markdown
    Right now I’m using the numbering options to add # in front of certain levels to create my headings. I’m not sure if this can all be solved with a Markdown-like-mode in OO using levels, styles, the inspector window, or an inspector window listing markdown options that are added to your document by clicking. Maybe features such as change all bold and italicized words to markdown code after export.

  4. Plain Text
    I would love to see OO have a plain text mode at times no matter how I copy or paste to and from apps. It’s plain text all the way. The only time it’s rich is during export as an option.

  5. No Word Wrap
    I’m not a fan of the word wrap. I’m not sure when or why it’s used. When I copy from OO, I wish it would ignore the word wrap. I copy data from OO a lot to other apps. Having to constantly remember to paste it as plain text and to highlight the text within a row to avoid the wrap is not efficient in my opinion because you can’t highlight within multiple rows. This is where Multiple Selections would come in handy. Exporting the file to eliminate the word wrap for quick copy is not convenient either. When I select multiple rows for copy, I wish the wrap would go away.

I know this is all easier said than done. The Omni Group is an excellent team that makes outsanding products. Your apps are part of the reason I love the Apple ecosystem, and I’m always looking forward to what you’re working on next because I know they’ll be improvements on top of what is already super powerful. OmniFocus and OmniOutliner are in my arsenal of daily apps (and a dash of OmniGraffle at this point), and it will continue to be that way for a long time. Keep up the great work! I look forward to everything I listed being released next week as a free update. I’m kidding. ;)

1 Like

Great list of features.

I would love. . .

  • to be able to write in markdown in the note field and have it render properly.
  • to be able to open a OmniOutliner document in Marked If so, there are so many options that open up…
  • to be able to export in markdown-- especially if I could export just a hoisted section
2 Likes

Thanks for your feedback!

This has been fixed in our current 4.4.2 test builds. The plain text representation used is now a tab delimited format instead of a fixed width.

Do you make full use of this feature, or is something like Ulysses Find/Replace UI sufficient?

Print to PDF is currently the only PDF export offered. We would be more likely to add some basic image controls in-app such as resizing or cropping that would be reflected in the exports than offer export specific options for images. But I will make note of your request.

This is a potential ability of the Markdown mode.

Awesome news! I’m looking forward this. :)

I don’t like to use Find / Replace windows for quick changes and adding text to lines as my text is developing. It breaks the flow.

If I start typing a list of data:

  • Item 1
  • Item 2
  • Item 3

Then mid-way, I stop and think, "I should of wrote “This is Item 1, 2, 3…” That’s when I crave a quick click or keyboard shortcut to add cursors on those three lines like you’d find in a text editor to type “This is”, and boom, they are on all three lines. From there, I could even select a portion of text within those highlighted areas to copy, add, or take away text without dealing with a Find / Replace window along with an additional Confirm or OK button to press.

  • This is Item 1
  • This is Item 2
  • This is Item 3

Whenever I’m flying through an outline, I hit a road block when it comes to Find / Replace and manipulating text. I realize I start typing cool, then later down the list, I realize it should of been cooler. I double-click cool, bring up the Find / Replace window, CMD+E to add cool to the Find window, and I’ve lost focus on what is about to change.

If I could see all instances of cool highlighted before the change, that would help. Sometimes, I don’t want to change it throughout the whole document. I merely want to modify it in a few areas, and I don’t want the Find / Replace window to tackle the whole document. So, I’d have to Focus on an area, then run all of the Find / Replace steps to replace some text. Meanwhile, if I could just “click click click click” in four areas and make a quick change, I’m done, and I keep moving on with creating my text. For this screenshot, picture being able to click on the word cool four times in the highlighted areas versus the whole row. I wouldn’t argue if the whole row could deal with this feature as well.

Since Ulysses is plain text, I will copy and paste text in a text editor to do bulk changes, unless I’m dealing with images, then I have to use Find / Replace. Their Find / Replace does a nice job of highlighting the words when the time comes, but I’d still rather deal with multiple selections (cursors) when possible. Again, the Find / Replace just breaks a flow.

I’m not a coder, but I still use text editors for bulk changes. To me OmniOutliner is great at managing a wide variety of text. I feel like this is one feature that would put it even further than any competitor, which aren’t even close to OmniOutliner, since it already handles adding and organizing text so well. Actually, I look forward to the day when multiple selections is just a default on all computers and apps like the copy / paste functionality. I think that feature is a hidden gem and super powerful.

Sometimes I dislike writing these posts because it sounds like I’m whining and complaining, but I am not. I love OmniOutliner, and I see myself using it for a very long time. The more I use OO, the more I think about a wish list of features to replace other applications I’m using.

I’m looking forward to this! The main reason I mentioned linking to images in a previous post was because I was trying to avoid syncing an entire OO document loaded with images to make one text change. If the images didn’t re-sync, then I would actually love for them to live within the OO document, so they are always there. For instance, making multiple photo journals and the photos stay intact. I love the packaged files.

Excellent! :)

4 years later.

  • OmniOutliner can open markdown files, but cannot save back to the original final.
  • There is still no plain text mode.

Is this correct or am I missing something?

It would be really really interesting if a plain text mode was available.

I don’t know if my filterCSV open source project is of use/interest here.

It can ingest OPML (from eg OmniOutliner) and emit Markdown.

(It can do a lot more besides, but that’s not the point.)

I don’t know if the Markdown it emits is in the style you want,

Just a thought.

2 Likes

Thanks for sharing! Looks like a terrific job.

I actually have some applescripts that allow me to take parts of the outline and sync back to the original md files whence they came. This, however, still feels like a adhoc solution and not the desirable kind of support for the markdown file format I am looking for. (If OmniOutliner could edit markdown files that would be ideal. Meaning, read and write back to the same file).

I’m wondering if @DerekM could tell us if this is still being considered and/or there is something in this direction in the pipeline. (My guess is not, of course, seeing that OmniOutliner didn’t even make it to the roadmap).

1 Like

Not to push filterCSV on you any further but the Markdown it can emit should be editable.

And I just tested OmniOutliner into filterCSV and the best match seems to indeed be exporting from OmniOutliner as Markdown.
Along the way I fixed filterCSV to take Markdown lists with dashes as bullet markers, rather than asterisks - as that’s what OmniOutliner emits. So this question has been useful to me.

What you mean by this?
If I understood correctly, I process would be exporting as OPML, converting to CSV and then to Markdown.

Or would it be possible a more direct approach?

python 3 path/filterCSV-master/filterCSV markdown all "path/Untitled 2.ooutline" "path/test.md"

I very slightly misspoke so let me clarify.

If you export to Plain Text from OmniOutliner you get a nice clean tabbed flat file - with dashes to denote Markdown bullets. (Put it through eg Marked and it should parse it as Markdown.)

The problem with the OPML route - if you want Markdown in the end - is it puts all sorts of irrelevant stuff in the <head> element.

Hence my recommending Plain Text (really Markdown).

Now, I’m quite happy to accept a Github issue in (at least) two circumstances:

  1. filterCSV’s parsing of OPML is not up to standard.
  2. filterCSV’s generating Markdown isn’t up to standard.

Note: filterCSV is a little simplistic and mainly oriented to CSV manipulation for iThoughts.

BTW your syntax for invoking filterCSV has two problems:

  1. You probably want python3 rather than python 3.
  2. filterCSV reads from stdin and writes to stdout/stderr. So you will want < , > and possibly 2>. The idea was to make it part of a pipeline.

I wanted to add a note here for those interested, that I’ve created an automation that converts your outline to Markdown and pasted it here.

Note: This doesn’t look for styles on words, like bold or italic – just things like headers, lists, quotes, tasks, and code blocks.

1 Like

This post was flagged by the community and is temporarily hidden.