как перемещаться по слову в командной строке в tcsh?

как перемещаться по слову в командной строке в tcsh?

допустим, команда "ls word1 word2 word3"

Я хочу переместить курсор с конца строки на "word2", но не хочу очищать "word3" в процессе. Просто прыгните назад на два слова и достигните начала "word2"

есть ли сочетание клавиш для перехода на одно слово вперед и назад, не удаляя слово в командной строке?

решение1

Когда редактор строк tcsh настроен в emacsрежиме (который является режимом по умолчанию, используйте bindkey -eдля возврата в него, если вы включили viрежим ранее):

% bindkey | grep word | egrep 'for|back'
"^[^H"         -> backward-delete-word
"^[B"          -> backward-word
"^[F"          -> forward-word
"^[b"          -> backward-word
"^[f"          -> forward-word
"^[^?"         -> backward-delete-word

Итак, ESCа затем b/ f(или B/ F) — последовательности, которые терминалы обычно отправляют при нажатии Alt+ b/ f( Alt+ Shift+ b/ fдля заглавных букв).

То же самое вы делаете и в emacsредакторе.

В viрежиме (после bindkey -v) вы будете использовать обычные viкоманды перемещения в командном режиме vi ( back, word, end и их эквиваленты в верхнем регистре для перемещений WORD (слова, разделенные пробелами)).

решение2

"Alt+b" для перехода назад и "Alt+f" для перехода вперед. Также "Alt+backspace" должен удалить слово назад.

решение3

Добавляем ярлыки, как и ожидает пользователь Windows (просто поместите их в свою ~/.cshrcоболочку или вставьте в нее):

# Use CTRL + left/right to move a word at a time:
bindkey '^[[1;5D' backward-word
bindkey '^[[1;5C' forward-word

Также для этих целей можно использовать другие сочетания клавиш, например:

# Use ALT + left/right to move a word at a time:
bindkey '^[[1;3D' backward-word
bindkey '^[[1;3C' forward-word

Связанный контент