Spec-Zone.ru › Fish 3.4

Интерактивное использование

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

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

Справка

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

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

Справку по конкретному встроенному (builtin) элементу можно получить с параметром -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

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

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

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

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

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

  • Программы man и whatis отображают все установленные страницы справки в качестве дополнений.
  • Программа 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_option

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

fish_color_comment

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

fish_color_selection

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

fish_color_operator

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

fish_color_escape

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

fish_color_autosuggestion

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

fish_color_cwd

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

fish_color_user

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

fish_color_host

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

fish_color_host_remote

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

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-режима.

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

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

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

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

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

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

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

Редактор 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-mode к режиму vi-mode, используя что-то вроде:

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-mode, функция fish_mode_prompt отобразит индикатор режима слева от командной строки. Чтобы отключить эту функцию, переопределите её пустой функцией. Для отображения режима в другом месте (например, в правой части командной строки), используйте результат работы функции fish_default_mode_prompt.

Когда привязка меняет режим, она перерисует индикатор режима, если он существует, и остальную часть строки, только если индикатор не существует. Итак, если вы хотите индикатор режима в вашей fish_prompt, вам нужно стереть fish_mode_prompt, например, добавив пустой файл в ~/.config/fish/functions/fish_mode_prompt.fish. (Привязки, изменяющие режим, должны вызывать функцию привязки repaint-mode, см. 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'

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

Кроме того, Escape - это то же самое, что и Alt в терминале. Чтобы отличить нажатие Escape и затем другой клавиши от нажатия Alt и этой же клавиши (или последовательности escape-символов, которые отправляет клавиша), 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.4/interactive.html

Spec-Zone.ru

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