Допустим, я написал длинную команду в терминале Mac OSX, т.е.
say "Hello, how are you? I am good thank you. How is it going with you? Fine, thanks"
и теперь я хочу изменить слово Helloна Hi.
Чтобы сделать это, сейчас я должен продолжать нажимать (или удерживать) левую клавишу клавиатуры, пока «курсор» не достигнет конца слова Hello, а затем удалить его. Обычный метод «удержания опции» не работает, как в большинстве других приложений OS X.
Есть ли способ пропустить слово за раз вместо этого (или любой другой, более короткий, способ получить курсор там)?
Редактирование командной строки - это функция вашей оболочки, а не терминала . Возможно, ваша оболочка - bash, и, вероятно, стиль ее редактирования в командной строке установлен на «emacs».
Вот несколько комбинаций клавиш в стиле Emacs, которые вам могут пригодиться:
Ca: beginning-of-line
Ce: end-of-line
Mf: forward-word
Мб: backward-word
Компакт диск: delete-char
Md: kill-word(удалить следующее слово)
M-DEL: backward-kill-word
C- x означает Control+ x, поэтому Ca Control+ a.
M- x означает Meta+ x, но, вероятно, на вашей клавиатуре нет клавиши Meta. Таким образом, вместо этого вы можете использовать ESC x (то есть Escapeзатем x). Терминал имеет настройку для автоматической отправки ESC до нажатия клавиш с нажатой Optionклавишей. Использование этой функции отключает расширенную обработку символов, которую Mac OS X обычно обеспечивает при использовании модификатора Option. Итак, если вы используете несколько расширенных символов и хотите Option+ xотправить ESC x , то вы можете включить эту опцию терминала .
В вашем примере есть много способов перейти к «Hello»:
Ищите «Привет»: Cr H ello Cj (или ESC)
В обычном Emacs вы просто используете RET ( Return), чтобы завершить поиск в текущем местоположении и вернуться к редактированию. Но в bash привязки по умолчанию заставляют RET (т.е. Cm) всегда выполнять текущую строку, даже если активен инкрементальный поиск. Таким образом, часть Cj / ESC является отклонением от нормального Emacs.
Перейти к началу строки и двигаться вперед: Ca Mf Cf (или →)
Перейти к началу строки, затем перейти по словам: Ca Mf Mf Mb
Много используйте Мб (только реально выполнимо, если вы сопоставите Option с Meta).
Есть также несколько способов выполнить желаемую замену:
удалить слово и заменить его: Md H i
удалить символы и заменить их: Cd Cd Cd Cd Cd H i
передвиньте «H» и удалите следующую работу, замените ее: Cf Md i
передвиньтесь «H» и удалите оставшиеся символы, замените их: Cf Cd Cd Cd Cd i
Если вы остановились в конце слова (возможно, через Ca Mf Mf), вы можете использовать M-DEL H i.
Я не уверен, очевидно это или нет, мне потребовалась минута, чтобы понять это, но я нахожусь на MBP без мета-ключа и использую конфигурацию терминала по умолчанию. Чтобы двигаться вперед и назад по словам, я могу нажать Esc, а затем F, или Esc, а затем B. Просто хотел бы упомянуть об этом, потому что, как это было объяснено выше, я пытался нажать Esc + x, а затем f или b ...
cwd
Есть ли способ изменить среду или оболочку, чтобы я мог использовать ctrl или fn + клавиши со стрелками, чтобы соответствовать моей IDE?
Привязка readline по умолчанию для forward-wordMeta-F ( bash(1)страница руководства, раздел READLINE, подраздел « Команды для перемещения» ). Я не уверен, что Meta переводит в OS X, хотя. Вариант, возможно.
<kbd>
элементы. Подмножество HTML разрешен в разметке здесь . Появление происходит из-за локального стиля тега (фон, цвет рамки, стиль рамки, ширина границы и т. Д.). Вы можете просмотреть исходную разметку моего поста («просмотреть источник» на этой странице ). См. Meta.stackexchange.com/questions/5527, даже если в MSO отключен причудливый стиль: meta.stackexchange.com/questions/1939/#23571set -o vi
в свой .bashrc! gnu.org/software/bash/manual/html_node/…Привязка readline по умолчанию для
forward-word
Meta-F (bash(1)
страница руководства, раздел READLINE, подраздел « Команды для перемещения» ). Я не уверен, что Meta переводит в OS X, хотя. Вариант, возможно.источник