Движение по строкам текста
Строки текста — это части буфера, ограниченные символами новой строки, которые считаются частью предыдущей строки. Первая строка текста начинается в начале буфера, а последняя строка текста заканчивается в конце буфера, независимо от того, является ли последний символ символом новой строки. Разделение буфера на строки текста не зависит от ширины окна, от продолжения строк в отображении или от способа отображения табуляций и управляющих символов.
- Команда: beginning-of-line &optional count
-
Эта функция перемещает точку в начало текущей строки. С аргументом count, не равным
nilили 1, она перемещает точку вперёд на count-1 строк, а затем в начало строки.Эта функция не перемещает точку через границу поля (см. Поля), если это не приводит к перемещению за границу поля в другую строку; следовательно, если count равно
nilили 1, и точка находится на границе поля, точка не перемещается. Для игнорирования границ полей, либо привяжитеinhibit-field-text-motionкt, либо используйте функциюforward-lineвместо неё. Например,(forward-line 0)делает то же самое, что и(beginning-of-line), за исключением того, что она игнорирует границы полей.Если эта функция достигает конца буфера (или доступной части, если применяется сужение), она позиционирует точку там. Ошибка не сигнализируется.
- Функция: line-beginning-position &optional count
Возвращает позицию, в которую
(beginning-of-line count)бы переместила точку.
- Команда: end-of-line &optional count
-
Эта функция перемещает точку в конец текущей строки. С аргументом count, не равным
nilили 1, она перемещает точку вперёд на count-1 строк, а затем в конец строки.Эта функция не перемещает точку через границу поля (см. Поля), если это не приводит к перемещению за границу поля в другую строку; следовательно, если count равно
nilили 1, и точка находится на границе поля, точка не перемещается. Для игнорирования границ полей, привяжитеinhibit-field-text-motionкt.Если эта функция достигает конца буфера (или доступной части, если применяется сужение), она позиционирует точку там. Ошибка не сигнализируется.
- Функция: line-end-position &optional count
Возвращает позицию, в которую
(end-of-line count)бы переместила точку.
- Команда: forward-line &optional count
-
Эта функция перемещает точку вперёд на count строк, в начало строки, следующей за ней. Если count отрицательно, она перемещает точку на -count строк назад, в начало строки, предшествующей ей. Если count равно нулю, она перемещает точку в начало текущей строки. Если count равно
nil, это означает 1.Если
forward-lineвстречает начало или конец буфера (или доступной части) до того, как найдёт нужное количество строк, она устанавливает точку там. Ошибка не сигнализируется.forward-lineвозвращает разницу между count и количеством фактически перемещённых строк. Если вы пытаетесь переместиться вниз на пять строк от начала буфера, в котором есть только три строки, точка останавливается в конце последней строки, а значение будет 2. В качестве явного исключения, если последняя доступная строка не пустая, но не имеет символа новой строки (например, если буфер заканчивается без символа новой строки), функция устанавливает точку в конец этой строки, и возвращаемое значение функции считает эту строку как одну успешно перемещённую строку.В интерактивном вызове, count — это числовой префиксный аргумент.
- Функция: count-lines start end &optional ignore-invisible-lines
-
Эта функция возвращает количество строк между позициями start и end в текущем буфере. Если start и end равны, то она возвращает 0. В противном случае она возвращает по крайней мере 1, даже если start и end находятся на одной строке. Это потому, что текст между ними, рассматриваемый изолированно, должен содержать по крайней мере одну строку, если он не пустой.
Если необязательный ignore-invisible-lines не
nil, невидимые строки не будут включены в подсчёт.
- Команда: count-words start end
-
Эта функция возвращает количество слов между позициями start и end в текущем буфере.
Эту функцию также можно вызвать интерактивно. В этом случае она выводит сообщение, сообщающее о количестве строк, слов и символов в буфере или в области, если область активна.
- Функция: line-number-at-pos &optional pos absolute
-
Эта функция возвращает номер строки в текущем буфере, соответствующий позиции буфера pos. Если pos равно
nilили опущено, используется текущая позиция буфера. Если absolute равноnil, по умолчанию, подсчёт начинается с(point-min), поэтому значение относится к содержимому доступной части (возможно, суженного) буфера. Если absolute неnil, игнорируются любые сужения, и возвращается абсолютный номер строки.
Также см. функции bolp и eolp в Окружение точки. Эти функции не перемещают точку, но проверяют, находится ли она уже в начале или конце строки.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Text-Lines.html