Перемещение по текстовым строкам
Текстовые строки — это части буфера, разделённые символами новой строки, которые считаются частью предыдущей строки. Первая текстовая строка начинается в начале буфера, а последняя текстовая строка заканчивается в конце буфера независимо от того, является ли последний символ символом новой строки. Разбиение буфера на текстовые строки не зависит от ширины окна, переноса строк при отображении или способа отображения табуляции и управляющих символов.
- Команда: 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).
- Функция: pos-bol &optional count
Подобна функции
line-beginning-position, но игнорирует поля (и работает эффективнее).
- Функция: pos-eol &optional count
Подобна функции
line-end-position, но игнорирует поля (и работает эффективнее).
- Команда: 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-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Text-Lines.html