Функция автодополнения в Linux даже лучше, чем вы думаете

Функция автодополнения в Linux даже лучше, чем вы думаете

Резюме

  • Функция автодополнения с помощью клавиши Tab экономит время и предотвращает ошибки, автоматически завершая команды и имена файлов.
  • Оболочки Linux, такие как bash и zsh, предлагают мощные функции автодополнения клавишей Tab, которые обрабатывают подкоманды и параметры.
  • Команда git демонстрирует весь потенциал Tab Complete с контекстно-зависимыми дополнениями.

Linux полон сочетаний клавиш, вам просто нужно знать, что это такое или где их искать. Дополнение Tab — одна из тех функций, которая хороша в своей простоте, но имеет скрытую мощь, о которой вы можете не знать.

Что такое автодополнение клавишей Tab?

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

Вот несколько примеров того, как работает автодополнение по клавише Tab.

Автодополнение — это функция вашей оболочки, и эта статья фокусируется на двух наиболее используемых: bash и zsh. Автодополнение очень настраиваемо, и функции различаются в зависимости от системы.

Введите первые несколько букв команды (попробуйте апрель or MKD), затем нажмите Tab. Если ваша оболочка найдет только одну команду, начинающуюся с этих букв, она автоматически завершит ее, напечатав оставшиеся буквы. Теперь вы можете нажать Enter, чтобы выполнить команду, или продолжить ввод, чтобы предоставить больше аргументов.

Если ваш исходный текст соответствует более чем одной команде, их имена будут выведены на экран. Вот пример, показывающий текст rm, за которым следует Tab:

Функция автодополнения в Linux даже лучше, чем вы думаете

Вы можете продолжать вводить команду и нажимать Tab, чтобы уточнить список, пока он не станет однозначным или пока вы не введете полную команду.

Автодополнение Tab также работает для имен файлов, которые вы указываете в качестве аргументов. Например, вы можете ввести лс /у затем нажмите Tab и ваша оболочка должна завершить его ls /usr/. Это значительно ускоряет ввод длинных путей и значительно снижает вероятность ошибок.

Этот уровень автодополнения Tab сам по себе преобразит ваш опыт работы с Linux. Когда я впервые узнал о автодополнении Tab, это было похоже на волшебство, и я не думаю, что смогу жить без этой функции сегодня. Но, как я недавно обнаружил, автодополнение Tab предлагает гораздо больше, чем просто автодополнение команд и имен файлов.

Дополнение табуляцией — это гораздо больше

Для начала попробуйте автодополнение с помощью команды типа cd в каталоге, содержащем как файлы, так и папки. Вы должны заметить, что cd {начало-каталога}, затем Tab, автоматически дополняет имя каталога, но cd {начало-файла}, затем Tab, не делает этого. Оболочка достаточно умна, чтобы распознать, что аргумент cd должен быть путем к каталогу, а не к файлу, поэтому она автоматически дополняет первый вариант, но не второй.

Ваша оболочка должна включать завершающий слеш после завершения каталога, даже если вам нужно указать только имя каталога. Это позволяет вам быстро завершить весь путь с помощью клавиши Tab, не останавливаясь и не вводя каждый / между именами каталогов.

Показывая все совпадения, когда их больше одного, ваша оболочка может помочь вам сузить круг того, что вы пытаетесь набрать. Но некоторые оболочки идут дальше. Например, в zsh на macOS, когда я набираю я делаю затем нажмите Tab, и моя оболочка выведет два совпадения: Documents и Downloads:

Функция автодополнения в Linux даже лучше, чем вы думаете

Если я сейчас снова нажму Tab, он завершится ls Документы/и нажатие Tab далее циклически переключается между ls Документы/ и ls Загрузки/. Обратите внимание, что это происходит только тогда, когда есть двусмысленность. Если вы введете ls Документы/, затем нажмите Tab, функция автозаполнения распечатает все файлы в папке «Документы», а не перейдет в папку «Загрузки».

Добавить привязать TAB:меню-завершить в ваш ~/.bashrc или TAB:меню-завершено в ваш ~/.inputrc, если вы хотите такое поведение.

Чтобы принять автодополнение при циклическом перемещении, но продолжить автодополнение клавишей Tab (например, для длинного пути), можно нажать / в конце каталога, который вы хотите выбрать.

Дополнение Tab также может обрабатывать параметры, поддерживаемые введенной вами командой. Например, попробуйте ввести мкдир — затем Tab. Опять же, результаты будут зависеть от вашей среды, но в любом случае вы сможете увидеть список опций, которые поддерживает mkdir:

Функция автодополнения в Linux даже лучше, чем вы думаете

В macOS моя оболочка показывает однобуквенные параметры для mkdir, например -m и -p. Рядом с каждым из них отображается текст использования, который объясняет, что делает опция. В Ubuntu моя оболочка показывает длинные опции. Она не выводит никакой информации об использовании, но длинные опции в любом случае более самодокументируемы.

Функция автодополнения в Linux даже лучше, чем вы думаете

Команда git переводит завершение на следующий этап

Параметры автодополнения стали для меня настоящим открытием. Я так привык использовать man или опцию —help для отображения использования команд, что понятия не имел, что моя оболочка может делать за меня большую часть работы. Но именно команда git действительно показала мне истинную силу автодополнения, и с тех пор она преобразила мой способ работы.

Программа git невероятно самоосознающая, поэтому ее опции автодополнения фактически предоставляют альтернативный интерфейс. Вы можете начать с изучения всех подкоманд git, введя мерзавец за которым следует вкладка:

Функция автодополнения в Linux даже лучше, чем вы думаете

Но git auto-complete показывает всю свою мощь при работе в репозитории git. Допустим, вы внесли изменения в один локальный файл, например, README.md:

Функция автодополнения в Linux даже лучше, чем вы думаете

Теперь введите git добавить, затем Tab, и ваша оболочка должна преобразовать это в git добавить README.md. Программа git распознала, что за подкомандой add может следовать список имен файлов для добавления их в текущий коммит. Она знает, что имеет смысл добавлять только те файлы, которые действительно изменились, поэтому она может автоматически дополнить полное имя единственного файла, который нужно добавить.

Функция автодополнения в Linux даже лучше, чем вы думаете

Аналогично, как только вы добавили файл, git совершить то Tab автоматически дополнит его имя, а также другие файлы, которые вы можете зафиксировать немедленно, включая файлы, которые вы еще не добавили:

Функция автодополнения в Linux даже лучше, чем вы думаете

Это дополнение даже учитывает аргументы. Например, как только вы добавили файл в индекс, вы можете отменить его индексацию с помощью git restore —staged, как объясняет git status. На этом этапе, git restore — подготовлено после нажатия Tab будет показан только README.md, единственный подготовленный файл:

Функция автодополнения в Linux даже лучше, чем вы думаете

Дополнение Tab настолько полезно, что вы обнаружите, что используете его постоянно, как только вы его обнаружите. Но всегда стоит быть любопытным: продолжайте нажимать Tab в разных точках цепочки команд, и вы узнаете, насколько мощной может быть эта функция.

Валентин Павлов/ автор статьи
Страсть Влентина к играм началась с Resident Evil, и с тех пор он не переставал играть в хоррор-игры. Пишет экспертные руководства для самых сложных игр и обзоры для самых громких релизов. Является магистром журналистики и имеет степень бакалавра лингвистики. Любимые игры: GTA 5, Silent Hill 2, Call of Duty: Modern Warfare 2, Heavy Rain, Metro 2033 и другие.
Понравилась статья? Поделиться с друзьями:
Добавить комментарий