Как я могу случайной сортировки строк в буфере? - PullRequest
7 голосов
/ 30 мая 2011

У меня есть буфер слов и фраз в отсортированном порядке, и я хотел бы, чтобы строки сортировались в случайном порядке.Как бы я сделал это с помощью встроенной функции emacs или с помощью elisp?

Например, учитывая

bar
elisp
emacs
foo
hello world
the quick brown fox

Я хотел бы получить совершенно произвольный результат, например:

foo
the quick brown fox
hello world
elisp
emacs
bar

или ...

hello world
elisp
bar
the quick brown fox
foo
emacs

Ответы [ 4 ]

9 голосов
/ 25 июля 2016

Использование Bash в GNU / Linux:

Аналогично решению Шона, выберите регион и затем:

C-u M-| shuf

Пояснение:

M- | передает содержимое выбранного региона в команду bash shuf. Шуф тасует линии. Префикс C-u берет вывод shuf и использует его для перезаписи выбранной области.

7 голосов
/ 30 мая 2011

В качестве альтернативы, здесь sort-lines адаптировано к этому требованию.

Я удалил аргумент reverse (очевидно, здесь не имеет значения) и просто предоставил функцию сравнения, возвращающую случайный результат в sort-subr.

(defun my-random-sort-lines (beg end)
  "Sort lines in region randomly."
  (interactive "r")
  (save-excursion
    (save-restriction
      (narrow-to-region beg end)
      (goto-char (point-min))
      (let ;; To make `end-of-line' and etc. to ignore fields.
          ((inhibit-field-text-motion t))
        (sort-subr nil 'forward-line 'end-of-line nil nil
                   (lambda (s1 s2) (eq (random 2) 0)))))))

Для оригинала:
М-х find-function RET sort-lines RET

6 голосов
/ 30 мая 2011

randomize-region.el , кажется, делает то, что вы хотите.

4 голосов
/ 30 мая 2011

Если вы не против использовать Perl, вы можете выбрать регион, который хотите рандомизировать, а затем набрать Cu M- | perl -MList::Util=shuffle -e 'print shuffle <STDIN>'.

Я уверен, что многие другие популярные языки программирования предлагают аналогичные возможности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...