Spec-Zone.ru › Fish 3.5

Взаимодействие

Fish гордится своей удобством в интерактивном режиме. Это обусловлено несколькими функциями, которые мы объясним в следующих разделах.

Fish используется с помощью команд на языке Fish, см. Язык Fish для получения информации об этом.

Помощь

Fish обладает обширной системой помощи. Используйте команду help, чтобы получить помощь по конкретной теме или команде. Например, написание help syntax отображает раздел синтаксиса этой документации.

Fish также имеет страницы man для своих команд и преобразует страницы помощи в страницы man. Например, man set покажет документацию для set в виде страницы man.

Помощь по конкретному встроенному элементу также может быть получена с параметром -h. Например, чтобы получить помощь по встроенному элементу fg, введите fg -h или help fg.

Основную страницу можно просмотреть с помощью help index (или просто help) или man fish-doc. Руководство можно просмотреть с помощью help tutorial или man fish-tutorial.

Автодополнение

Fish предлагает команды по мере ввода, основываясь на истории команд, дополнениях и допустимых путях к файлам. По мере ввода команд вы увидите предложение после курсора, в приглушенном сером цвете (который можно изменить с помощью переменной fish_color_autosuggestion).

Для принятия автодополнения (заменяющего содержимое командной строки) нажмите → или Control+F. Для принятия первого предложенного слова нажмите Alt+→ или Alt+F. Если автодополнение не соответствует вашим требованиям, просто проигнорируйте его: оно не будет выполнено, пока вы его не примете.

Автодополнение — мощный способ быстро вызвать часто вводимые команды, набрав первые несколько символов. Это также эффективный метод навигации по иерархии каталогов.

Если вы не хотите использовать автодополнение, вы можете отключить его, установив $fish_autosuggestion_enabled в 0:

set -g fish_autosuggestion_enabled 0

Автодополнение по табуляции

Автодополнение по табуляции — это функция экономии времени любого современного оболочки. Когда вы нажимаете Tab, Fish пытается угадать остальную часть слова под курсором. Если он находит только один вариант, он вставляет его. Если он находит больше, он вставляет самую длинную однозначную часть, а затем открывает меню («страничный просмотр»), в котором можно перемещаться, чтобы найти то, что вы ищете.

В страничном просмотре можно перемещаться с помощью клавиш со стрелками, Page Up / Page Down, Tab или Shift+Tab. Нажатие Control+S (связывание pager-toggle-search — / в режиме vi) открывает меню поиска, которое можно использовать для фильтрации списка.

Fish предоставляет некоторые общие дополнения:

  • Команды (встроенные, функции и обычные программы).
  • Имена переменных оболочки.
  • Имена пользователей для расширения тильды.
  • Имена файлов, даже в строках с подстановкой символов, таких как * и **.

Он также предоставляет большое количество специальных скриптовых дополнений для программ. Большинство этих дополнений — это простые варианты, такие как опция -l для ls, но некоторые более продвинутые. Например:

  • Программы man и whatis отображают все установленные страницы man в качестве дополнений.
  • Программа make использует все целевые файлы в файле Makefile в текущем каталоге в качестве дополнений.
  • Команда mount использует все точки подключения, указанные в файле fstab, в качестве дополнений.
  • Команда ssh использует всех хостов, хранящихся в файле known_hosts, в качестве дополнений. (Для получения дополнительной информации см. документацию по ssh)
  • Команда su отображает пользователей в системе
  • Команды apt-get, rpm и yum отображают установленные или устанавливаемые пакеты

Вы также можете написать свои собственные дополнения или установить некоторые, полученные от других. Для этого см. Написание собственных дополнений.

Синтаксическое выделение

Fish интерпретирует командную строку по мере её ввода и использует синтаксическое выделение для предоставления обратной связи. Наиболее важной обратной связью является обнаружение потенциальных ошибок. По умолчанию ошибки отмечаются красным цветом.

Обнаруженные ошибки включают:

  • Несуществующие команды.
  • Чтение из или добавление в несуществующий файл.
  • Неправильное использование перенаправлений вывода.
  • Неправильное количество скобок

Для настройки синтаксического выделения можно изменить переменные окружения, перечисленные в разделе Переменные для изменения цветов выделения.

Fish также предоставляет готовые темы цветовых схем, которые можно выбрать с помощью fish_config. Запуск просто fish_config откроет интерфейс браузера, или вы можете использовать fish_config theme в терминале.

Например, чтобы отключить почти все цветовые выделения:

fish_config theme choose none

Или, чтобы увидеть все темы прямо в вашем терминале:

fish_config theme show

Переменные синтаксического выделения

Цвета, используемые fish для синтаксического выделения, можно настроить, изменив значения различных переменных. Значение этих переменных может быть одним из цветов, поддерживаемых командой set_color. Также поддерживаются модификаторы, принимаемые set_color , такие как --bold, --dim, --italics, --reverse и --underline.

Пример: чтобы ошибки выделялись красным цветом, используйте:

set fish_color_error red --bold

Следующие переменные доступны для изменения цветов выделения в fish:

Переменная

Значение

fish_color_normal

цвет по умолчанию

fish_color_command

команды, такие как echo

fish_color_keyword

ключевые слова, такие как if - возвращается к цвету команды, если не задано

fish_color_quote

строки в кавычках, такие как "abc"

fish_color_redirection

перенаправления ввода-вывода, такие как >/dev/null

fish_color_end

разделители процессов, такие как ; и &

fish_color_error

синтаксические ошибки

fish_color_param

обычные параметры команд

fish_color_valid_path

параметры, являющиеся именами файлов (если файл существует)

fish_color_option

опции, начинающиеся с «-», до первого параметра «--»

fish_color_comment

комментарии, такие как ‘# важно’

fish_color_selection

выделенный текст в режиме vi

fish_color_operator

операторы расширения параметров, такие как * и ~

fish_color_escape

экранирование символов, такие как \n и \x70

fish_color_autosuggestion

автодополнения (предлагаемая оставшаяся часть команды)

fish_color_cwd

текущая рабочая директория в стандартном приглашении

fish_color_cwd_root

текущая рабочая директория в стандартном приглашении для пользователя root

fish_color_user

имя пользователя в стандартном приглашении

fish_color_host

имя хоста в стандартном приглашении

fish_color_host_remote

имя хоста в стандартном приглашении для удалённых сессий (например, ssh)

fish_color_status

код выхода команды без ошибки в стандартном приглашении

fish_color_cancel

индикатор ‘^C’ при отмене команды

fish_color_search_match

совпадения поиска по истории и выбранные элементы просмотрщика (только фон)

Если переменная не задана или пуста, fish обычно пытается $fish_color_normal, за исключением:

  • $fish_color_keyword, где сначала пытается $fish_color_command
  • $fish_color_option, где сначала пытается $fish_color_param

Переменные цвета просмотрщика

fish иногда выводит список вариантов в таблице, называемой просмотрщиком.

Пример: чтобы установить фон каждой строки просмотрщика, используйте:

set fish_pager_color_background --background=white

Чтобы получить черный текст на чередующихся белых и серых фонах:

set fish_pager_color_prefix black
set fish_pager_color_completion black
set fish_pager_color_description black
set fish_pager_color_background --background=white
set fish_pager_color_secondary_background --background=brwhite

Переменные, влияющие на цвета просмотрщика:

Переменная

Значение

fish_pager_color_progress

полоса прогресса в левом нижнем углу

fish_pager_color_background

цвет фона строки

fish_pager_color_prefix

строка префикса, т.е. строка, которая должна быть дополнена

fish_pager_color_completion

само дополнение, т.е. предлагаемая оставшаяся часть строки

fish_pager_color_description

описание дополнения

fish_pager_color_selected_background

фон выбранного дополнения

fish_pager_color_selected_prefix

префикс выбранного дополнения

fish_pager_color_selected_completion

суффикс выбранного дополнения

fish_pager_color_selected_description

описание выбранного дополнения

fish_pager_color_secondary_background

фон каждой второй невыбранной строки дополнения

fish_pager_color_secondary_prefix

префикс каждой второй невыбранной строки дополнения

fish_pager_color_secondary_completion

суффикс каждой второй невыбранной строки дополнения

fish_pager_color_secondary_description

описание каждой второй невыбранной строки дополнения

Если вторичные или выбранные переменные не заданы или пустые, используются обычные переменные, за исключением $fish_pager_color_selected_background, где сначала используется фон $fish_color_search_match

Сокращения

Чтобы избежать лишнего набора текста, часто используемая команда, например git checkout, может быть сокращена до gco с помощью команды abbr.

abbr -a gco git checkout

После ввода gco и нажатия Пробел или Ввод в командной строке появится полный текст git checkout

Это альтернатива псевдонимам и имеет преимущество в том, что вы видите фактическую команду перед её использованием, и фактическая команда будет сохранена в истории.

Настраиваемое заголовок

При использовании большинства виртуальных терминалов можно установить сообщение, отображаемое в строке заголовка окна терминала. Это можно сделать автоматически в fish, определив функцию fish_title. Функция fish_title выполняется до и после выполнения новой команды или её перевода в фокус, а вывод используется в качестве сообщения строки заголовка. Встроенная функция status current-command всегда возвращает имя задачи, которая должна быть переведена в фокус (или fish если управление возвращается к оболочке) при вызове функции fish_prompt. Первый аргумент fish_title будет содержать строку с последней выполненной командой в фокусе.

Стандартный заголовок fish отображает имя хоста, если подключение через ssh, выполняемую в данный момент команду (если это не fish) и текущую рабочую директорию. Всё это сокращается, чтобы не делать вкладку слишком широкой.

Примеры:

Чтобы отобразить последнюю команду и рабочую директорию в заголовке:

function fish_title
    # `prompt_pwd` shortens the title. This helps prevent tabs from becoming very wide.
    echo $argv[1] (prompt_pwd)
    pwd
end

Настраиваемое приглашение

Когда наступает очередь fish запросить ввод (например, после запуска или завершения команды), он отобразит приглашение. Для этого он выполняет функции fish_prompt и fish_right_prompt.

Вывод первого отображается слева, а вывод второго — справа в терминале. Вывод функции fish_mode_prompt будет добавлен слева, хотя по умолчанию эта функция делает это только при работе в режиме vi-mode.

Настраиваемое приветствие

При интерактивном запуске fish пытается выполнить функцию fish_greeting. По умолчанию fish_greeting выводит простое приветствие. Вы можете изменить его текст, изменив переменную $fish_greeting

Режим приватности

Если $fish_private_mode установлено в значение отличное от пустого, команды не будут записываться в файл истории на диске.

Вы также можете запустить fish --private (или fish -P для краткости). Это скрывает старую историю и предотвращает запись истории на диск. Это полезно для предотвращения утечки личной информации (например, при записи скриншотов) или при работе со конфиденциальными данными.

Вы можете запросить переменную fish_private_mode (if test -n "$fish_private_mode" ...) если хотите учитывать желание пользователя сохранить конфиденциальность и изменить поведение собственных скриптов fish.

END_OF_DOCUMENT_MARKER

Редактор командной строки

Редактор fish поддерживает копирование и вставку, поисковую историю и множество функций редактора, которые могут быть привязаны к специальным сочетаниям клавиш.

Как и bash, и другие оболочки, fish включает два набора сочетаний клавиш (или привязок клавиш): один, вдохновленный текстовым редактором Emacs, и второй — редактором Vi. По умолчанию используется режим Emacs. Можно переключиться на режим Vi, выполнив fish_vi_key_bindings, и вернуться обратно с помощью fish_default_key_bindings. Также можно создать свои собственные привязки клавиш, создав функцию и установив значение переменной fish_key_bindings в её имя. Например:

function fish_hybrid_key_bindings --description \
"Vi-style bindings that inherit emacs-style bindings in all modes"
    for mode in default insert visual
        fish_default_key_bindings -M $mode
    end
    fish_vi_key_bindings --no-erase
end
set -g fish_key_bindings fish_hybrid_key_bindings

Хотя сочетания клавиш, включенные в fish, включают многие из популярных сочетаний клавиш из соответствующих текстовых редакторов, это не полная реализация. Включается сочетание клавиш для открытия текущей командной строки в вашем предпочтительном редакторе (Alt+E по умолчанию), если вам нужна полная функциональность вашего редактора.

Общие привязки

Некоторые привязки являются общими для режимов Emacs и Vi, потому что они не являются привязками для редактирования текста или потому, что то, что делает Vi/Vim для конкретной клавиши, не имеет смысла для оболочки.

  • Tab завершает текущий токен. Shift+Tab завершает текущий токен и запускает режим поиска в просмотре страницы.
  • ← (влево) и → (вправо) перемещают курсор влево или вправо на один символ. Если курсор уже находится в конце строки, и доступно автоматическое предложение, → принимает автоматическое предложение.
  • Enter выполняет текущую командную строку или вставляет новую строку, если она ещё не завершена (например, отсутствует ) или end).
  • Alt+Enter вставляет новую строку в позицию курсора.
  • Alt+← и Alt+→ перемещают курсор на одно слово влево или вправо (до следующего пробела или знака препинания) или перемещает вперёд/назад в истории каталогов, если командная строка пуста. Если курсор уже находится в конце строки, и доступно автоматическое предложение, Alt+→ (или Alt+F) принимает первое слово в предложении.
  • Control+← и Control+→ перемещают курсор на одно слово влево или вправо. Эти сочетания принимают одно слово автоматического предложения — часть, по которой они перемещаются.
  • Shift+← и Shift+→ перемещают курсор на одно слово влево или вправо, не останавливаясь на знаках препинания. Эти сочетания принимают одно целое слово из автоматического предложения.
  • ↑ (вверх) и ↓ (вниз) (или Control+P и Control+N для поклонников Emacs) ищут в истории команд предыдущую/следующую команду, содержащую строку, указанную в командной строке до начала поиска. Если командная строка была пустой, когда поиск начался, все команды совпадают. См. раздел истории для получения дополнительной информации о поиске в истории.
  • Alt+↑ и Alt+↓ ищут в истории команд предыдущий/следующий токен, содержащий токен под курсором до начала поиска. Если командная строка не находилась на токене, когда поиск начался, все токены совпадают. См. раздел истории для получения дополнительной информации о поиске в истории.
  • Control+C отменяет всю строку.
  • Control+D удаляет один символ справа от курсора. Если командная строка пуста, Control+D завершит работу fish.
  • Control+U перемещает содержимое от начала строки до курсора в буфер обмена.
  • Control+L очищает и перерисовывает экран.
  • Control+R выполняет поиск в истории, если в командной строке есть что-то. Это в основном для облегчения перехода из других оболочек, где ctrl+r инициирует поиск в истории.
  • Control+W перемещает предыдущий компонент пути (всё до предыдущего «/», «:» или «@») в буфер обмена.
  • Control+X копирует текущий буфер в буфер обмена системы, Control+V вставляет содержимое буфера обмена.
  • Alt+D перемещает следующее слово в буфер обмена.
  • Alt+H (или F1) отображает страницу справки для текущей команды, если она существует.
  • Alt+L отображает содержимое текущего каталога, если курсор не находится над аргументом каталога, в этом случае будет показано содержимое этого каталога.
  • Alt+O открывает файл в позиции курсора в просмотрщике.
  • Alt+P добавляет строку &| less; в конец задания под курсором. В результате выходной вывод команды будет отображаться в просмотрщике.
  • Alt+W выводит краткое описание команды под курсором.
  • Alt+E редактирует текущую командную строку в внешнем редакторе. Редактор выбирается из первого доступного из переменных $VISUAL или $EDITOR.
  • Alt+V То же, что и Alt+E.
  • Alt+S Добавляет sudo к началу текущей командной строки. Если командная строка пустая, добавляет sudo к последней командной строке.
  • Control+Space Вставляет пробел без раскрытия сокращения. Для режима Vi это относится только к режиму вставки.

Команды режима Emacs

Для активации режима emacs используйте fish_default_key_bindings. Это также значение по умолчанию.

  • Home или Control+A перемещает курсор к началу строки.
  • End или Control+E перемещает курсор в конец строки. Если курсор уже находится в конце строки, и доступно автопредложение, то End или Control+E принимает автопредложение.
  • Control+B, Control+F перемещают курсор на один символ влево или вправо или принимают автопредложение так же, как общие привязки ← (влево) и → (вправо) (которые также доступны).
  • Control+N, Control+P перемещают курсор вверх/вниз или по истории, как общие привязки стрелок вверх и вниз.
  • Delete или Backspace удаляют по одному символу вперед или назад соответственно.
  • Control+K перемещает содержимое от курсора до конца строки в Буфер обмена (Кольцо убитых).
  • Alt+C приводит текущее слово к верхнему регистру.
  • Alt+U приводит текущее слово к верхнему регистру.
  • Control+T меняет местами последние два символа.
  • Alt+T меняет местами последние два слова.
  • Control+Z, Control+_ (Control+/ на некоторых терминалах) отменяет последнее изменение в строке.
  • Alt+/ отменяет последнюю отмену.

Вы можете изменить эти сочетания клавиш, используя встроенную функцию bind.

Команды режима Vi

Режим Vi позволяет использовать команды Vi-подобного типа в командной строке. Изначально активен режим вставки. Escape переключается в режим команды. Команды, доступные в режимах команды, вставки и визуального выбора, описаны ниже. Режим Vi использует некоторые привязки с режимом Emacs.

Для активации режима vi используйте fish_vi_key_bindings.

Также возможно добавить все привязки из режима emacs в режим vi, используя что-то вроде:

function fish_user_key_bindings
    # Execute this once per mode that emacs bindings should be used in
    fish_default_key_bindings -M insert

    # Then execute the vi-bindings so they take precedence when there's a conflict.
    # Without --no-erase fish_vi_key_bindings will default to
    # resetting all bindings.
    # The argument specifies the initial mode (insert, "default" or visual).
    fish_vi_key_bindings --no-erase insert
end

В режиме vi функция fish_mode_prompt отображает индикатор режима слева от командной строки. Чтобы отключить эту функцию, перезапишите её пустой функцией. Чтобы отобразить режим в другом месте (например, в правой части командной строки), используйте выход fish_default_mode_prompt функции.

Когда привязка меняет режим, она перерисовывает подсказку режима, если она существует, и остальную часть строки, только если она не существует. Таким образом, если вы хотите индикатор режима в fish_prompt, вам необходимо очистить fish_mode_prompt, например, добавив пустой файл в ~/.config/fish/functions/fish_mode_prompt.fish. (Привязки, которые изменяют режим, должны вызывать функцию repaint-mode bind, см. bind)

Функция fish_vi_cursor будет использоваться для изменения формы курсора в зависимости от режима на поддерживаемых терминалах. Следующий фрагмент кода можно использовать для ручного конфигурирования форм курсора после активации режима vi:

# Emulates vim's cursor shape behavior
# Set the normal and visual mode cursors to a block
set fish_cursor_default block
# Set the insert mode cursor to a line
set fish_cursor_insert line
# Set the replace mode cursor to an underscore
set fish_cursor_replace_one underscore
# The following variable can be used to configure cursor shape in
# visual mode, but due to fish_cursor_default, is redundant here
set fish_cursor_visual block

Кроме того, blink можно добавить после каждого из параметров формы курсора, чтобы установить мигающий курсор в указанной форме.

Если форма курсора не меняется после установки вышеперечисленных переменных, вероятно, ваш терминальный эмулятор не поддерживает необходимые возможности для этого. Также возможно, что fish_vi_cursor неправильно определил возможности вашего терминала (например, если вы используете tmux). В этом случае вы можете принудительно заставить fish_vi_cursor установить форму курсора, задав $fish_vi_force_cursor в config.fish. Вам нужно будет перезапустить fish, чтобы изменения вступили в силу. Если установка формы курсора остается нерабочей после этого, это почти наверняка проблема с вашим терминальным эмулятором, а не с fish.

Режим команды

Режим команды также известен как режим нормальный.

  • H перемещает курсор влево.
  • L перемещает курсор вправо.
  • I переключается в режим вставки в текущей позиции курсора.
  • V переключается в режим визуального выбора в текущей позиции курсора.
  • A переключается в режим вставки после текущей позиции курсора.
  • Shift+A переключается в режим вставки в конце строки.
  • 0 (ноль) перемещает курсор к началу строки (оставаясь в режиме команды).
  • D+D удаляет текущую строку и помещает её в Буфер обмена (Кольцо убитых).
  • Shift+D удаляет текст после текущей позиции курсора и помещает его в Буфер обмена (Кольцо убитых).
  • P вставляет текст из Буфера обмена (Кольцо убитых).
  • U просмотр истории команд в обратном порядке.
  • [ и ] поиск в истории команд предыдущего/следующего токена, содержащего токен под курсором до начала поиска. Подробнее о поиске в истории см. раздел история.
  • Backspace перемещает курсор влево.

Режим вставки

  • Escape переключается в режим команды.
  • Backspace удаляет один символ слева.

Режим визуального выбора

  • ← (влево) и → (вправо) расширяют выделение назад/вперед на один символ.
  • B и W расширяют выделение назад/вперед на одно слово.
  • D и X перемещают выделение в Буфер обмена (Кольцо убитых) и переключаются в режим команды.
  • Escape и Control+C переключаются в режим команды.
  • c и s удаляют выделение и переключаются в режим вставки.
  • d и x удаляют выделение и переключаются в нормальный режим.
  • X удаляет всю строку и переключается в нормальный режим.
  • y копирует выделение и переключается в нормальный режим.
  • ~ меняет регистр (верхний/нижний) в выделении и переключается в нормальный режим.
  • "*y копирует выделение в буфер обмена и переключается в нормальный режим.

Настраиваемые привязки

В дополнение к стандартным привязка, перечисленным здесь, вы также можете определить свои собственные с помощью bind:

# Just clear the commandline on control-c
bind \cc 'commandline -r ""'

Поместите bind инструкции в config.fish или в функцию, названную fish_user_key_bindings.

Последовательность клавиш (\cc) зависит от вашей конфигурации, в частности от терминала. Чтобы узнать, что отправляет терминал, используйте fish_key_reader:

> fish_key_reader # pressing control-c
Press a key:
Press [ctrl-C] again to exit
bind \cC 'do something'

> fish_key_reader # pressing the right-arrow
Press a key:
bind \e\[C 'do something'

Обратите внимание, что некоторые комбинации клавиш неразличимы или не могут быть отключены. Например, сочетание Control-i идентично клавише Tab. Это ограничение терминала, которое fish не может исправить.

Также, Escape эквивалентно Alt в терминале. Чтобы отличить нажатие Escape и затем другой клавиши от нажатия Alt и этой же клавиши (или последовательности, отправляемой клавишей), fish ожидает некоторое время после получения символа escape. Это настраивается с помощью переменной fish_escape_delay_ms.

Если вы хотите, чтобы нажатие Escape и затем символа считалось Alt+этим символом, установите значение переменной выше, например:

set -g fish_escape_delay_ms 100

Копирование и вставка (Буфер обмена)

Fish использует буфер обмена в стиле Emacs для функций копирования и вставки. Например, используйте Control+K (kill-line) для вырезания части строки от текущей позиции курсора до конца строки. Вырезанная строка (в emacs-терминах – убитая строка) добавляется в список вырезанных строк, называемый буфером обмена. Чтобы вставить последнее значение из буфера обмена (в emacs-терминах – выдернуть), используйте Control+Y (функция ввода yank). После вставки, используйте Alt+Y (yank-pop) для перехода к предыдущей вырезанной строке.

Поддерживается копирование и вставка извне, как через привязки Control+X / Control+V (функции fish_clipboard_copy и fish_clipboard_paste, 1), так и через функцию вставки терминала, для которой fish включает «Режим вставки с квадратными скобками», чтобы отличать вставку от ввода текста вручную. Кроме того, при вставке в одинарные кавычки, вставленные одинарные кавычки и обратные слэши автоматически экранируются, чтобы результат можно было использовать как отдельный токен, просто закрыв кавычки после вставки. Элементы буфера обмена хранятся в переменной fish_killring.

1

Эти функции зависят от внешних инструментов. В настоящее время поддерживаются xsel, xclip, wl-copy/wl-paste и pbcopy/pbpaste.

Многострочный ввод

Редактор командной строки fish может использоваться для работы с командами, состоящими из нескольких строк. Существует три способа сделать команду многострочной:

  • Нажатие клавиши Enter, когда блок команд не закрыт, например, когда одна или несколько командных блоков, таких как for, begin или if, не имеют соответствующей команды end.
  • Нажатие Alt+Enter вместо нажатия клавиши Enter.
  • Вставка символа обратного слэша (\) перед нажатием клавиши Enter, чтобы экранировать символ перевода строки.

Редактор командной строки fish работает одинаково в однострочном и многострочном режиме. Для перемещения между строками используйте клавиши влево и вправо, и другие подобные сочетания клавиш.

Поисковая история команд

После выполнения команды она запоминается в списке истории. Повторяющиеся элементы истории автоматически удаляются. Нажатие клавиш вверх и вниз позволяет перемещаться по истории вперёд и назад. Если строка текущей команды не пуста при запуске поиска по истории, отображаются только команды, содержащие введённую в командную строку строку.

Нажатие Alt+↑ и Alt+↓ также выполняет поиск по истории, но вместо поиска по всей команде, каждая команда разбивается на отдельные элементы, как и до её выполнения, и в истории ищется элемент, соответствующий тому, что находится под курсором.

Поиск по истории нечувствителен к регистру, если строка поиска не содержит заглавных букв. Вы можете прервать поиск для редактирования строки поиска, нажав Esc или Page Down.

Добавление пробела в начало командной строки предотвращает сохранение всей строки в истории. Она всё равно будет доступна для вызова до следующей команды, но не будет сохранена на диске. Это позволяет исправлять опечатки и подобные ошибки.

Список истории команд по умолчанию хранится в файле ~/.local/share/fish/fish_history (или $XDG_DATA_HOME/fish/fish_history, если эта переменная задана). Однако, вы можете установить переменную окружения fish_history для изменения имени сеанса истории (в результате получив файл <session>_history); как перед запуском оболочки, так и во время её работы.

Для других манипуляций см. команду history.

Примеры:

Чтобы найти предыдущие записи, содержащие слово «make», введите make в консоли и нажмите клавишу вверх.

Если в командной строке отображается cd m, поместите курсор на символ m и нажмите Alt+↑ для поиска ранее введённых слов, содержащих «m».

Перемещение по каталогам

Перемещение по каталогам обычно выполняется с помощью команды cd, но fish также предлагает некоторые расширенные функции.

Текущий рабочий каталог можно отобразить с помощью команды pwd или специальной переменной $PWD. Обычно это уже отображается в вашем приглашении.

История каталогов

Fish автоматически сохраняет историю посещённых каталогов с помощью cd, сохраняя эту историю в переменных dirprev и dirnext.

Для взаимодействия с этой историей каталогов предоставляются несколько команд:

  • dirh выводит историю
  • cdh отображает приглашение для быстрого перемещения по истории
  • prevd перемещается назад по истории. Она привязана к Alt+←
  • nextd перемещается вперёд по истории. Она привязана к Alt+→

Стек каталогов

Другой набор команд, обычно также доступный в других оболочках, таких как bash, работает со стеком каталогов. Управление стеком не автоматическое и требует явных вызовов следующих команд:

  • dirs отображает стек
  • pushd добавляет каталог в верхнюю часть стека и делает его текущим рабочим каталогом
  • popd удаляет каталог из верхней части стека и изменяет текущий рабочий каталог

© 2022 fish-shell developers
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.5/interactive.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API