Если вы проводите какое-то время за компьютером, вы, вероятно, нашли применение сочетаниям клавиш в своем рабочем процессе. Наиболее известными, возможно, являются Cmd-C и Cmd-V (или Ctrl-C и Ctrl-V) для копирования и вставки в самые разнообразные программы и системы. Опытные пользователи, как правило, идут еще дальше: популярные текстовые редакторы, такие как Emacs, Vim и другие, предоставляют пользователям невероятный спектр операций с помощью сложных комбинаций нажатий клавиш.
Оболочка IPython не заходит так далеко, но предоставляет ряд сочетаний клавиш для быстрой навигации при вводе команд. На самом деле эти ярлыки предоставляются не самим IPython, а благодаря его зависимости от библиотеки GNU Readline: как таковые, некоторые из следующих ярлыков могут отличаться в зависимости от конфигурации вашей системы. Кроме того, хотя некоторые из этих ярлыков работают в ноутбуке на основе браузера, этот раздел в основном посвящен ярлыкам в оболочке IPython.
Как только вы привыкнете к ним, они могут быть очень полезны для быстрого выполнения определенных команд, не перемещая руки с «домашней» позиции клавиатуры. Если вы являетесь пользователем Emacs или у вас есть опыт работы с оболочками в стиле Linux, следующее будет вам очень знакомо. Мы сгруппируем эти ярлыки в несколько категорий: ярлыки навигации, ярлыкиввода текста, ярлыки истории команди другие ярлыки.
Ярлыки навигации
В то время как использование клавиш со стрелками влево и вправо для перемещения вперед и назад по линии вполне очевидно, существуют и другие варианты, которые не требуют перемещения рук из положения «дома» на клавиатуре:
Нажатие Клавиши | Экшен |
---|---|
Ctrl-a | Переместите курсор в начало строки |
Ctrl-e | Переместите курсор в конец строки |
Ctrl-b или клавиша со стрелкой влево | Переместите курсор на один символ назад |
Ctrl-f или клавиша со стрелкой вправо | Переместите курсор на один символ вперед |
Ярлыки для ввода текста
В то время как все знакомы с использованием клавиши Backspace для удаления предыдущего символа, для достижения клавиши часто требуется небольшая гимнастика для пальцев, и она удаляет только один символ за раз. В IPython есть несколько ярлыков для удаления некоторой части текста, который вы вводите. Наиболее полезными из них являются команды для удаления целых строк текста. Вы поймете, что они стали второй натурой, если обнаружите, что используете комбинацию клавиш Ctrl-b и Ctrl-d вместо того, чтобы нажимать на пробел, чтобы удалить предыдущий символ!
Нажатие Клавиши | Экшен |
---|---|
Клавиша Backspace | Удалите предыдущий символ в строке |
Ctrl-d | Удалите следующий символ в строке |
Ctrl-k | Вырезать текст от курсора до конца строки |
Ctrl-u | Вырезать текст от начала строки до курсора |
Ctrl-y | Выдерните (т. е. вставьте) текст, который был ранее вырезан |
Ctrl-t | Транспонируйте (т. е. переключите) два предыдущих символа |
Ярлыки истории команд
Возможно, наиболее эффективные ярлыки, обсуждаемые здесь, — это те, которые IPython предоставляет для навигации по истории команд. Эта история команд выходит за рамки вашего текущего сеанса IPython: вся ваша история команд хранится в базе данных SQLite в каталоге профиля IPython. Самый простой способ получить к ним доступ-это использовать клавиши со стрелками вверх и вниз для пошагового просмотра истории, но существуют и другие варианты:
Нажатие Клавиши | Экшен |
---|---|
Ctrl-p (или клавиша со стрелкой вверх) | Доступ к предыдущей команде в истории |
Ctrl-n (или клавиша со стрелкой вниз) | Доступ к следующей команде в истории |
Ctrl-r | Обратный поиск по истории команд |
Обратный поиск может быть особенно полезен. Напомним, что в предыдущем разделе мы определили вызываемую функцию square
. Давайте перевернем нашу историю Python из новой оболочки IPython и снова найдем это определение. Когда вы нажмете Ctrl-r в терминале IPython, вы увидите следующее приглашение:
In [1]:
(reverse-i-search)`':
Если вы начнете вводить символы в этом приглашении, IPython автоматически заполнит самую последнюю команду, если таковая имеется, которая соответствует этим символам:
In [1]:
(reverse-i-search)`sqa': square??
В любой момент вы можете добавить дополнительные символы для уточнения поиска или снова нажать Ctrl-r, чтобы продолжить поиск другой команды, соответствующей запросу. Если вы следовали в предыдущем разделе, нажатие Ctrl-r еще два раза даст:
In [1]:
(reverse-i-search)`sqa': def square(a):
"""Return the square of a"""
return a ** 2
Как только вы найдете нужную команду, нажмите кнопку «Вернуться», и поиск завершится. Затем мы можем использовать полученную команду и продолжить наш сеанс:
In [1]: def square(a):
"""Return the square of a"""
return a ** 2
In [2]: square(2)
Out[2]: 4
Обратите внимание, что Ctrl-p/Ctrl-n или клавиши со стрелками вверх/вниз также можно использовать для поиска в истории, но только путем сопоставления символов в начале строки. То есть, если вы наберете def
и затем нажмете Ctrl-p, он найдет самую последнюю команду (если таковая имеется) в вашей истории, которая начинается с символов def
.
Разные ярлыки
Наконец, есть несколько различных ярлыков, которые не вписываются ни в одну из предыдущих категорий, но тем не менее полезно знать:
Нажатие Клавиши | Экшен |
---|---|
Ctrl-l | Очистить экран терминала |
Ctrl-c | Прервать текущую команду Python |
Ctrl-d | Выход из сеанса IPython |
В частности, Ctrl-c может быть полезен, когда вы случайно запускаете очень длительную работу.
Хотя некоторые из обсуждаемых здесь коротких путей поначалу могут показаться немного утомительными, с практикой они быстро становятся автоматическими. Как только вы разовьете эту мышечную память, я подозреваю, что вы даже поймаете себя на том, что жалеете, что они не были доступны в других контекстах.