Как быстро перемещаться по длинным командам?

106

Есть ли способ ускорить навигацию на CLI Linux, когда я должен ввести длинные команды? Я просто использую стрелки прямо сейчас, и - если у меня есть длинная команда, требуется некоторое время, чтобы перейти от начала команды к середине.

Есть ли способ, например, перейти к середине команды без использования стрелок?

    
задан Stann 27.05.2011 в 15:17
источник

5 ответов

139

Некоторые полезные привязки клавиш для редактирования строк, предоставляемые библиотекой Readline :

  • Ctrl-A : перейти к началу строки
  • Ctrl-E : перейти к концу строки
  • Alt-B : пропустить одно слово назад
  • Alt-F : пропустить одно слово вперед
  • Ctrl-U : удалить до начала строки
  • Ctrl-K : удалить до конца строки
  • Alt-D : удалить до конца слова
ответ дан Adam Byrtek 27.05.2011 в 17:49
источник
55

Еще несколько ярлыков здесь

Ctrl + a – go to the start of the command line
Ctrl + e – go to the end of the command line
Ctrl + k – delete from cursor to the end of the command line
Ctrl + u – delete from cursor to the start of the command line
Ctrl + w – delete from cursor to start of word (i.e. delete backwards one word)
Ctrl + y – paste word or text that was cut using one of the deletion shortcuts (such as the one above) after the cursor
Ctrl + xx – move between start of command line and current cursor position (and back again)
Alt + b – move backward one word (or go to start of word the cursor is currently on)
Alt + f – move forward one word (or go to end of word the cursor is currently on)
Alt + d – delete to end of word starting at cursor (whole word if cursor is at the beginning of word)
Alt + c – capitalize to end of word starting at cursor (whole word if cursor is at the beginning of word)
Alt + u – make uppercase from cursor to end of word
Alt + l – make lowercase from cursor to end of word
Alt + t – swap current word with previous
Ctrl + f – move forward one character
Ctrl + b – move backward one character
Ctrl + d – delete character under the cursor
Ctrl + h – delete character before the cursor
Ctrl + t – swap character under cursor with the previous one
    
ответ дан karlacio 08.06.2011 в 22:43
12

Если вы являетесь пользователем vi [m] и bash, вам может быть полезно использовать readline (используется bash) для редактирования vi-стиля, добавив set editing-mode vi к вашим файлам ~/.inputrc или /etc/inputrc . Или, вы могли бы просто сделать bash использовать vi-стиль редактирования, выполнив команду bash set -o vi . Добавьте команду в файл ~/.bashrc , чтобы сделать поведение постоянным.

Если вы пользователь zsh, добавьте bindkey -v в файл .zshrc для редактирования в стиле vi.

    
ответ дан Smith John 14.10.2012 в 12:58
8

Я не знаю, как конкретно перейти в середину, не используя клавиши курсора. Тем не менее, я могу порекомендовать использовать CTRL + курсорную клавишу для перехода от пустой к пустой (т. Е. Перейти от одного слова к другому).     

ответ дан Kory Wnuk 27.05.2011 в 15:26
0

Отправьте фрагмент кода ниже в вашем .bashrc. Ctrl-a переходит в начало и нажатие Ctrl-a снова переходит в середину.

jump_mid() {
    if [ "$READLINE_POINT" -eq "0" ]; then
        LEN=${#READLINE_LINE}
        POS=$(($LEN / 2))
        READLINE_POINT=$POS
    else
        READLINE_POINT=0
    fi
}
bind -x '"\C-a" : jump_mid'

Или, если вы хотите использовать Ctrl-Something для прямого перехода к середине, измените код на:

jump_mid() {
    LEN=${#READLINE_LINE}
    POS=$(($LEN / 2))
    READLINE_POINT=$POS
}

И привяжите его к чему-то другому, чем Ctrl-a.

    
ответ дан marukse 05.10.2017 в 12:00