当我必须输入长命令时,是否可以加快Linux CLI的导航?
我现在只是使用箭头,并且-如果我有长命令,从命令开始到命令中间将花费一些时间。

有没有办法例如不使用箭头就跳到命令中间?

#1 楼

Readline库提供了一些有用的行编辑键绑定:



Ctrl + A:转到行的开头

Ctrl + E:转到行尾

Alt + B:向后跳过一个单词

Alt + F:向后跳过一个单词

Ctrl + U:删除到行首

Ctrl + K:删除到行尾

Alt + D:删除到字尾


评论


+1,因为即使由于某些原因ctrl箭头不起作用,此操作也有效。值得注意的是,对于屏幕用户,Ctrl-A变为Ctrl-AA。

– Enzotib
2011年5月27日18:54



要撤消删除(或通过删除来移动文本),请使用Ctrl +Y。

– Lekensteyn
2011年6月8日在22:48

Ctrl +右箭头,Ctrl +左箭头值得一提。

–mac
2014年1月16日15:04

在Ubuntu上,使用Gnome和GnomeTerminal Alt-A可以打开菜单而不是移动光标。您如何在Gnome中使用Alt-A?我的意思是,Gnome是默认设置,因此可能有任何人读它会在Gnome中运行终端。

–詹森
2014年8月5日23:42

如果您要通过SSH从OS X连接到Ubuntu,则可能必须使用“ Esc”而不是Ctrl,例如Esc-A,Esc-E等。对于iTerm和Terminal来说是这样。

–弗雷德·克劳森(Fred Clausen)
2015年1月28日,0:30



#2 楼

这里还有更多快捷方式

 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
 


评论


感谢您提供的这份简单明了的清单。

–neverMind9
18年7月9日在10:04

#3 楼

如果您是vi [m]和bash用户,则可以通过将set editing-mode vi添加到~/.inputrc/etc/inputrc文件中来使readline(由bash使用)使用vi样式编辑很有用。或者,您可以通过运行bash命令set -o vi使bash使用vi样式编辑。将命令添加到~/.bashrc文件中,以使行为持久。

如果您是zsh用户,请将bindkey -v添加到.zshrc文件中以进行vi样式编辑。

#4 楼

我不知道一种不使用光标键专门跳到中间的方法。但是,我建议您使用Ctrl +光标键从空白移到空白(即,从一个单词跳到另一个单词)。

#5 楼

在您的.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不同的东西。