в Emacs отредактируйте несколько строк сразу

Как советовали в комментарии, я использовал регулярное выражение. Поэтому я придумал следующее:

{{ numberOfComments }} {% if numberOfComments|last == 1 and not (numberOfComments matches '{11$}') %}комментарий{% elseif numberOfComments|last > 1 and numberOfComments|last < 5 and not (numberOfComments matches '{1[2-4]$}') %}комментария{% else %}комментариев{% endif %}

Регулярное выражение {11$} выбирает любую строку, которая заканчивается на 11. {} просто для определения регулярного выражения в Twig. [115 ]

UPD: добавлена ​​недостающая логика для чисел, оканчивающихся на 12-14, которые отсутствовали в вопросе, но на самом деле необходимы.

63
задан Luke Girvin 4 September 2011 в 01:29
поделиться

6 ответов

Это так просто: Cx rt

Вот несколько примеров: http://ergoemacs.org/emacs/emacs_string-rectangle_ascii-art.html

87
ответ дан 24 November 2019 в 16:05
поделиться

Одним из решений является использование режима CUA. Активируйте режим cua с помощью Mx cua-mode , выберите начало прямоугольника: сначала нажмите C-Enter , затем переместите курсор с помощью стандартных команд перемещения, чтобы сделать выбор, теперь нажатие клавиши ввода в любое время приведет к циклическому перемещению курсора. через углы прямоугольника, позволяющие вам добавлять или добавлять текст к выделенному фрагменту.

22
ответ дан 24 November 2019 в 16:05
поделиться

Прямоугольники для простых вещей, таких как удаление одинакового количества пробелов в соседних строках.

В противном случае клавиатурные макросы являются путь.

3
ответ дан 24 November 2019 в 16:05
поделиться

Полагаю, вы ищете режим cua, предложенный boskom. http://www.vimeo.com/1168225?pg=embed&sec=1168225 этот скринкаст может дать вам представление о том, как его использовать.

4
ответ дан 24 November 2019 в 16:05
поделиться

I found the answer.

Here: http://www.linuxdevcenter.com/pub/a/linux/2004/05/06/graphviz_dot.html?page=2

По сути, можно определить, какие наборы узлов должны быть одинаковыми высота. Чтобы получить узлы A и B на одной высоте, мне нужно добавить строку: {Ранга = то же самое; AB};

Итак, вот пример, аналогичный предыдущему, но с правильно настроенными узлами:

digraph G {
{rank=same;  "768"  "944"  "539"  "528" };
{rank=same;  "768 539"  "768 528" };
{rank=same;  "768 640\n528 544"  "528 536\n530 539"  "768 704\n539 548"  "944 728\n539 566"  "944 656\n528 560"  "944 800\n896 768" };
{rank=same;  "800 896 548\n944 566 728\n539 704 768"  "528 944 536\n530 566 560\n728 656 539"  "800 896 944\n656 560 528\n544 640 768"  "768 640 548\n528 530 544\n536 539 704" };
"768 640\n528 544" -> "768 528"; 
"528 536\n530 539" -> "539"; 
"528 536\n530 539" -> "528"; 
"800 896 548\n944 566 728\n539 704 768" -> "768 704\n539 548"; 
"800 896 548\n944 566 728\n539 704 768" -> "944 728\n539 566"; 
"800 896 548\n944 566 728\n539 704 768" -> "944 800\n896 768"; 
"768 539" -> "768"; 
"768 539" -> "539"; 
"768" -> "∅"; 
"944" -> "∅"; 
"528 944 536\n530 566 560\n728 656 539" -> "528 536\n530 539"; 
"528 944 536\n530 566 560\n728 656 539" -> "944 728\n539 566"; 
"528 944 536\n530 566 560\n728 656 539" -> "944 656\n528 560"; 
"768 704\n539 548" -> "768 539"; 
"944 728\n539 566" -> "944"; 
"944 728\n539 566" -> "539"; 
"800 896 944\n656 560 528\n544 640 768" -> "768 640\n528 544"; 
"800 896 944\n656 560 528\n544 640 768" -> "944 656\n528 560"; 
"800 896 944\n656 560 528\n544 640 768" -> "944 800\n896 768"; 
"539" -> "∅"; 
"944 656\n528 560" -> "944"; 
"944 656\n528 560" -> "528"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 548\n944 566 728\n539 704 768"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "528 944 536\n530 566 560\n728 656 539"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 944\n656 560 528\n544 640 768"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "768 640 548\n528 530 544\n536 539 704"; 
"768 528" -> "768"; 
"768 528" -> "528"; 
"528" -> "∅"; 
"768 640 548\n528 530 544\n536 539 704" -> "768 640\n528 544"; 
"768 640 548\n528 530 544\n536 539 704" -> "768 704\n539 548"; 
"768 640 548\n528 530 544\n536 539 704" -> "528 768 530\n539 536"; 
"944 800\n896 768" -> "768"; 
"944 800\n896 768" -> "944"; 
"528 768 530\n539 536" -> "528 536\n530 539"; 
"528 768 530\n539 536" -> "768 539"; 
"528 768 530\n539 536" -> "768 528"; 
}
- 121 --- 4380311--

Вы можете использовать следующие команды (и клавиши) для этого:

  • открытый прямоугольник (Cx, r, o) добавить пробелы
  • kill-rectangle (Cx, r, k) удалить
  • очистить прямоугольник (Cx, r, c) заменить пробелами
  • Mx строка-вставка-прямоугольник с указанным текстом

Вот полное описание этих функций: http://www.gnu.org/software/emacs/manual/html_node/emacs/Rectangles.html

19
ответ дан 24 November 2019 в 16:05
поделиться

The answers show above are for inserting text in columns. TextMate's "Edit Each Line in Selection" inserts the same text in each line regardless of the length of each lines. I'm learning Lisp now, so as an exercise I wrote a function to do this:

(defun append-to-lines (text-to-be-inserted)
  ;;Appends text to each line in region
  (interactive "sEnter text to append: ")
  (save-excursion
    (let (point-ln mark-ln initial-ln final-ln count)
      (barf-if-buffer-read-only)
      (setq point-ln (line-number-at-pos))
      (exchange-point-and-mark)
      (setq mark-ln (line-number-at-pos))
      (if (< point-ln mark-ln)
          (progn (setq initial-ln point-ln final-ln mark-ln)
                 (exchange-point-and-mark))
        (setq initial-ln mark-ln final-ln point-ln))
      (setq count initial-ln)
      (while (<= count final-ln)
        (progn (move-end-of-line 1)
               (insert text-to-be-inserted)
               (next-line)
               (setq count (1+ count))))
      (message "From line %d to line %d." initial-ln final-ln ))))

You first make a selection that includes all the lines you want to affect and then run the function with M-x append-to-lines.

2
ответ дан 24 November 2019 в 16:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: