
допустим, команда "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 ( b
ack, w
ord, e
nd и их эквиваленты в верхнем регистре для перемещений 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