commandline - установка или получение текущего буфера командной строки
Синтаксис
commandline [OPTIONS] [CMD]
Описание
commandline может использоваться для установки или получения текущего содержимого буфера командной строки.
Без параметров commandline возвращает текущее значение командной строки.
При указании CMD буфер командной строки очищается и заменяется содержимым CMD.
Доступны следующие опции:
- -C или --cursor
-
Установить или получить текущую позицию курсора, а не содержимое буфера. Если аргумент не указан, выводится текущая позиция курсора, в противном случае аргумент интерпретируется как новая позиция курсора. Если задана одна из опций -j, -p или -t, позиция относительна соответствующей подстроке, а не всего буфера командной строки.
- -B или --selection-start
-
Получить текущую позицию начала выделения в буфере.
- -E или --selection-end
-
Получить текущую позицию конца выделения в буфере.
- -f или --function
-
Приводит к тому, что все дополнительные аргументы интерпретируются как функции ввода и помещаются в очередь, чтобы они были прочитаны до любых дополнительных нажатий клавиш. Эта опция не может быть комбинирована с другими опциями. См. bind для списка функций ввода.
- -h или --help
-
Отображает справку по использованию этой команды.
Следующие опции изменяют способ, которым commandline обновляет буфер командной строки:
- -a или --append
-
Не удалять текущую командную строку, добавить указанную строку в конец.
- -i или --insert
-
Не удалять текущую командную строку, вставить указанную строку в текущую позицию курсора.
- -r или --replace
-
Удалить текущую командную строку и заменить её указанной строкой (по умолчанию).
Следующие опции изменяют, какая часть командной строки печатается или обновляется:
- -b или --current-buffer
-
Выбрать всю командную строку, не включая отображаемые автопредложения (по умолчанию).
- -j или --current-job
-
Выбрать текущую задачу - здесь задача - это одна цепочка команд. Останавливается на логических операторах или терминаторах (;, & и новые строки).
- -p или --current-process
-
Выбрать текущий процесс - здесь процесс - это одна команда. Останавливается на логических операторах, терминаторах и каналах.
- -s или --current-selection
-
Выбирает текущее выделение.
- -t или --current-token
-
Выбирает текущий токен.
Следующие опции изменяют способ, которым commandline печатает текущий буфер командной строки:
- -c или --cut-at-cursor
-
Печать выделения только до текущей позиции курсора. Если объединить с
--tokenize, это напечатает до последнего завершенного токена - исключая токен, в котором находится курсор. Это обычно то, что вам нужно, например, при автозаполнении. Чтобы получить оба варианта, используйте обаcommandline --cut-at-cursor --tokenize; commandline --cut-at-cursor --current-token, илиcommandline -co; commandline -ctдля краткости. - -o или --tokenize
-
Разделить выделение на токены и печатать один токен типа строка в строке.
Если commandline вызывается во время вызова для завершения заданной строки с помощью complete -C STRING, commandline будет считать указанную строку текущим содержимым командной строки.
Следующие опции выводят метаданные о состоянии командной строки:
- -L или --line
-
Вывести строку, на которой находится курсор, при этом самая верхняя строка начинается с 1.
- -S или --search-mode
-
Принимает значение true, если командная строка выполняет поиск в истории.
- -P или --paging-mode
-
Принимает значение true, если командная строка показывает содержимое страницы, например, результаты автозаполнения.
- --paging-full-mode
-
Принимает значение true, если командная строка показывает содержимое страницы, например, результаты автозаполнения, и все строки отображаются (без сообщения «<n> дополнительных строк»).
- --is-valid
-
Возвращает true, когда командная строка синтаксически корректна и полная. В таком случае она будет выполнена при вызове функции привязки
execute. Если командная строка неполная, возвращает 2, если ошибочная, возвращает 1.
Пример
commandline -j $history[3] заменяет задачу под курсором третьим элементом из истории командной строки.
Если командная строка содержит
>_ echo $flounder >&2 | less; and echo $catfish
(с курсором на «o» в «flounder»)
echo $flounder >& - это первый процесс, less - второй, и and echo $catfish - третий.
echo $flounder >&2 | less - это первая задача, and echo $catfish - вторая.
$flounder - это текущий токен.
Наиболее распространенное использование для чего-то вроде автозаполнения
set -l tokens (commandline -opc)
дает текущий процесс (то, что дополняется), разделенный на отдельные элементы до, но не включая, текущий дополняемый токен
Если вам также нужна информация о текущем токене, добавьте
- ::
-
set -l current (commandline -ct)
Обратите внимание, что это упрощает отказ от moot ввода-вывода fish - если возможно, лучше, если дополнения просто напечатают все варианты и оставят сопоставление с текущим токеном логике fish.
Дополнительные примеры:
>_ commandline -t $flounder >_ commandline -ct $fl >_ commandline -b # or just commandline echo $flounder >&2 | less; and echo $catfish >_ commandline -p echo $flounder >&2 >_ commandline -j echo $flounder >&2 | less
© 2005-2009 Axel Liljencrantz, 2009-2023 fish-shell contributors
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.7/cmds/commandline.html