Как выбрать столбец таблицы в режиме emacs org
Я не могу найти способ копирования столбца или ряда из таблицы.
Единственное решение, которое я нашел до сих пор, - это скопировать всю таблицу, а затем удалить столбцы, которые мне не нужны.
Я полагаю, что для этого должен быть еще один простой способ. Может быть, я слишком устал, чтобы понять, как это сделать.
Ответы
Ответ 1
Я думаю, что самым простым способом было бы использовать прямоугольники emacs
-
Чтобы создать прямоугольник, поместите курсор в один из углов прямоугольника, который вы хотите создать.
-
Используйте C-SPC
или то, что у вас установлено set-mark-command
.
-
Поместите курсор в диагональный угол вашего прямоугольника.
-
Используйте C-x r r
r
, чтобы скопировать прямоугольник в регистр с именем r
-
Используйте C-x r i
r
, чтобы вставить прямоугольник, который хранится в регистре с именем r
.
После этого процесса скопируйте и вставьте нужные столбцы. Возможно, вам придется повторить этот процесс, если столбцы не смежны.
Примечание
Я использую полужирный r
, чтобы обозначить, что это технически имя регистра, а не какой-то специальный ввод.
Ответ 2
Если вы специально хотите скопировать столбец (столбцы) в другую таблицу org (или, вернее, в исходную таблицу), поддерживайте это.
См. C-h f org-table-copy-region
RET
Он работает так же, как и обычные команды прямоугольника, поэтому он не лучший интерфейс для выбора столбца; но связанная команда вставки умна о том, что она делает с контентом.
Ответ 3
Я планирую использовать команду emacs rectangle, чтобы избежать использования регистров, используя команду copy-rectangle-as-kill
bound C-x r M-w, выполните команду после выбора области, которая скопирует прямоугольник (см. this для примера того, как работают прямоугольники маркировки). Затем вы можете вставить скопированный ремангл, выполнив C-x r y.
UPDATE
Страница org-mode hacks описывает способ копирования столбцов с использованием формул org-table. Вам нужно будет назвать таблицу.
Вот пример использования табличных формул для копирования столбцов из другой таблицы
Предположим, что у вас есть следующая таблица с именем FOO
, необходимо указать таблицу для обращения к ней из формул таблицы.
#+TBLNAME: FOO
| 0 | 2 | 1 |
| 1 | 3 | 2 |
| 2 | 4 | 3 |
Вы хотите скопировать столбцы 1 и 3 из таблицы FOO
в столбцы 1 и 3 следующей таблицы (давайте назовем ее B)
| | 5 | |
| | 6 | |
| | 7 | |
Следующая формула выполнит трюк, вам нужно будет скопировать формулу под таблицей B и переместить курсор на формулу и сделать C-c C-c
#+TBLFM: $1=remote(FOO,@@#$1)::$2=remote(FOO,@@#$3)
Таблица B будет преобразована в следующий
| 0 | 5 | 1 |
| 1 | 6 | 2 |
| 2 | 7 | 3 |
Вы можете прочитать о синтаксисе формул org table здесь, в основном $N
относится к N-й колонке, @N
относится к N-я строка. @#
и $#
могут использоваться вместо N для ссылки на строку и столбец, где текущее значение идет. remote(table-name, @N$N)
относится к N-й строке и N-му столбцу таблицы table-name
. ::
объединяет несколько формул.
Ответ 4
Мне тоже не удалось использовать стандартные операции прямоугольника. При переходе к следующему столбцу были выделены все строки между точкой и меткой. Когда я попытался скопировать столбцы по формуле, описанной выше, и в режиме хакеров org, org бросил ошибки, если значения столбца были нечисловыми с более чем одним словом.
Но хороший намек на резку и склеивание показал, что проблема заключается в начальном направлении движения курсора. Перемещение сначала вправо в следующий столбец, затем вниз выделяет правильную область. Затем выполняются стандартные операции прямоугольника.