Converting lines of text into a numbered list in org-mode

Recently I had a list of things in a org buffer that I wanted to turn into a numbered list but couldn’t find an elegant way to do it.
The solution I came up with was to use a regex-replace to insert 1. in front of each line. Then I used org-mode’s C-c C-c to renumber the lines.
I also asked on #org-mode on irc. Two interesting solutions were suggested.

  1. use string-rectangle
  2. use the string-rectangle function via the keyboard shortcuts: C-x r t 1 . <SPC>
    string-rectangle is new to me but seems as though it could be very useful. Thanks quicksilver for that suggestion.

  3. use org-mode’s org-toggle-item
  4. which is described as:
    Insert separator line in table or modify bullet status of line.
    Also turns a plain line or a region of lines into list items.
    Calls `org-table-insert-hline', `org-toggle-item', or
    `org-cycle-list-bullet', depending on context.

    The trick is to prefix it with C-u which supplies ARG to the function org-toggle-item which changes each line in a region into an item.
    C-u C-c - then S-right until you get to the list type you want.
    Thanks Thumper_ for that suggestion.

UPDATE: zhen pointed me to rectangle-number-lines, which I did look at before but it’s default option numbers the lines without the full stop after each number. As I wanted this for org-mode, I really wanted the numbers to be formatted as “1. “. After reading the help on rectangle-number-lines though, I found that if you prefix it with the argument command C-u it will ask you for a starting number and the format of the numbers.
∴ Select a rectangle at least one column wide of the lines you want to number then
C-u C-x r N <ENTER><backspace>.<spc><ENTER>

2 responses to “Converting lines of text into a numbered list in org-mode”

  1. Nice solutions! Thanks for sharing.
    I think the simplest solution in this case is to mark a selection and then use replace-regexp to replace the beginning of lines with “1. “

    • Sorry. The simplest way to add the “1. ” to the beginning of each line. Then of course C-c C-c 🙂

Leave a Reply

Your email address will not be published.