使用Terminal时可以映射归位键和结束键吗?


76

可以使用fn +左箭头或fn +右箭头模拟MacBook Pro上的homeend键。或者,当某些设置更改时,请使用Command(Apple)键而不是fn。

这些都不在终端机上工作。

因为我经常需要去到行的开头或结尾,并且还想按单词向前或向后跳。

如何在Terminal中的一条线上跳来跳去?

Answers:


64

使用control+ a产品和control+ e在末端。

也可以使用esc+ f移至下一个单词的开头,并使用esc+ b移至当前单词的开头。(您必须注意当前和下一个)


2
完善!用单词跳来跳去怎么办?(在Windows中为ctrl-left和ctrl-right)
2011年

@ at01我更新了答案。
Am1rr3zA 2011年

40
谁设计了终端机的钥匙?!?!
2011年

4
我更喜欢使用Option +左箭头和Option +右箭头移动到单词的开头
Allan Jikamu 2015年

2
Ctrl + a和Ctrl + e对我有用,但是由于没有像许多人建议的那样重新映射击键,我更喜欢@AlphaFighter的Shift + Home和Shift + End(Shift + Fn +向左箭头和Shift + Fn MacBook Pro键盘上的+右箭头)。
约翰·里克斯

70

要回答有关如何获得行首或行尾的问题,默认情况下,Terminal会将这些键映射到它:

  • shift + home→行首,等效于普通终端中的“ home”键
  • shift + end→行尾,等效于普通终端中的“ end”键

如果您想以“正常”方式回家(不需要换班),请转到[终端菜单]→[偏好设置]→[配置文件]选项卡(或某些OS X版本的设置)→[键盘]子选项卡。

然后将这些键修改/添加为以下“将字符串发送到外壳”

  • 家: \033[H
  • 结束: \033[F

\033如果需要添加零件,可以通过单击编辑对话框输入中的退出键来获得零件。

然后家庭和结束将再次正常工作(phe)。

另请注意,终端中的默认情况下,“ alt +←”和“ alt +→”分别映射到左单词和右单词,这是另一个便于记住的组合。

在更高版本的Mac OS X中,如果按Home / End键时终端屏幕上移或下移,则可能需要将Home键设置为\033[1~,将End键设置为\033[4~要获得所需结果的结束键(无需移动) 。

可以随意修改此答案以添加更多有用的键绑定,因为它是社区Wiki。


5
\ 033 [H和\ 033 [F在家和其他地方都没有用;但是\ 001和\ 005做到了。您可以通过按ctrl-A和ctrl-E在编辑对话框中输入这些代码。我正在使用zsh,不确定是否有任何区别。
JW。

班次+上班时间/结束时间完成了这项工作
isaias-b

1
一直试图弄清楚这一点,这救了我!
保罗·格雷

当您在本地使用实际的终端应用程序时,这非常有用。但是,当您使用macOS机器时,这些似乎不再起作用。如何解决这个问题?
Ahi Tuna

2
@AhiTuna SSH只是与终端会话的连接,而不是与终端仿真器的连接。输入选项始终由您使用的任何终端仿真器定义。
巴绍

39

听起来您正在寻求使用readline和bash的帮助,这是从以下网站修改而来的疯狂的键盘内容列表:http : //www.math.utah.edu/docs/info/features_7.html#SEC45

Ctrla 移至行首。
Ctrle 移至行尾。
Escf 向前移动一个字。
Escb 向后移动一个字。
Ctrll 清除屏幕,在顶部重新打印当前行。

Ctrlk 从当前光标位置终止到行尾的文本。
Escd 从光标终止到当前单词的末尾,或者在单词之间终止至下一个单词的末尾。
EscDel 从光标处杀死前一个单词的开头,如果在单词之间,则终止于前一个单词的开头。
Ctrlw 从光标杀死前一个空格。这EscDelCtrla 与单词边界不同而不同。

Ctrld 删除光标下方的字符。
Ctrl_ 撤消您所做的最后一件事。您可以一路撤消以返回空行。

并且,这是如何将文本拉回到行中的方法。Yanking意味着从kill缓冲区复制最近被杀死的文本。

Ctrly 将最近被杀死的文本拉回到光标处的缓冲区中。
Escy 旋转压环,然后拉出新的顶部。仅当先前命令为Ctrly或时,您才能执行此操作Escy


这是无价的-谢谢-我希望它可以在某处作为可打印文件使用!
马特b

我意识到这还不是很“优化”,但是;文件->打印?
詹森·萨拉兹

哇,与linux上的术语相比,它们超级笨拙。有什么方法可以重新映射这种废话吗?
btk 2015年

是的,请尝试Bash手册页。(我自己不知道该怎么做。)
SilverWolf

6

对于那些喜欢使用箭头键的用户,按fnShift+ Left Arrow将使您回到命令行。同样,fnShift+ Right Arrow会将您带到最后。


6

您可以使用option+ leftoption+ 一次移动一个单词right

关于使用homeend,终端的默认绑定如下:

  • shift+ home→跳到行首
  • shift+ end→跳到行尾
  • home →滚动到回滚缓冲区的顶部
  • end →滚动到回滚缓冲区的底部

在许多其他终端应用程序(在多个平台上)中,那些修改和未修改的对被反转(即裸露homeend用于在当前行周围跳转),修改后的版本(无论由shift或其他方式)用于导航回滚缓冲区)。如果愿意,可以执行以下操作来反转Terminal的绑定,使其工作:

转到终端菜单→首选项→设置/配置文件选项卡→键盘子选项卡。

然后将按键操作对修改为以下内容:

  • ↖︎:传送文字:\ 033 [H
  • ⇧↖︎:滚动到顶部
  • ↘︎:发送文字:\ 033 [F
  • ⇧↘︎:滚动到底部

注意:通过按Esc键,将\ 033输入到“编辑”对话框的待发送文本框中。

在那里,您可能想要类似地交换已修改和未修改page up以及的绑定page down,以保持一致:按下带有的导航键shift代表Terminal本身的命令(像文档一样浏览回滚缓冲区),而按下不带通过对任何正在运行发送按键它(例如bashlessnanoscreen,等)。关键-动作对是:

  • ⇞:传送文字:\ 033 [5〜
  • ⇧⇞:向上滚动页面
  • ⇟:传送文字:\ 033 [6〜
  • ⇧⇟:向下滚动页面


4

具有所需功能的映射homeend键将轻松解决该问题。

已经发布了许多答案,但是如果您使用zsh,则可以设置home为:

\001

并设置end为:

\005

通过单击首选项-配置文件-键盘。


我也尝试过此方法,但随后它破坏了vim的Home和End :(您可以将它们映射到Alfredo Cardigliano建议的内容:密钥:↖动作:\ 033OH密钥:↗动作:\ 033OF
curlingdude

这对我来说很完美!我只使用Nano,所以这里没有问题。
Sterling Bourne

是的,这是可行的,但通常无法解决问题。我从庆典搬到zsh中,我使用FN-SHIFT-LEFT / RIGHT。这解决了我的问题:stackoverflow.com/questions/8638012/...
VLK

1

这是使其与vim一起工作的最有效方法。转到终端->首选项->配置文件->键盘并添加:

键:↖操作:\ 033OH

键:↗动作:\ 033OF


1

我想为这个问题提供替代解决方案。如果您是vi用户,这将非常有用。终端中的Vim键绑定提供了一种以vim样式使用终端的方法。您可以通过set -o vi在终端中键入来完成此操作,.bash_profile如果需要,可以随时将其放入。之后,您的终端实际上​​就是vim编辑器。您可以使用esckey进入命令模式并以vim的方式走动。例如,0将您带到起点,$将您带到终点。您还可以使用IA转到开始和结束并立即进入编辑模式。wb让你一个字向前和向后移动。如果您尝试通过按以下方式进入视觉模式v,您将获得一个vim编辑器,离开该编辑器时拥有的文本将在终端中执行。

请注意,此vim键绑定将使您从其他答案中学到的所有热键无效。


0

这是可打印形式的列表,根据需要:)

http://pastebin.com/uCqwn7qs

我还修复了说明中的“错误”。这是您最初可以在说明中阅读的内容:

ESC-d从光标终止前一个单词的开头,或者如果在单词之间,则终止至前一个单词的开头。

这闻起来像是剪切和粘贴错误,非常难闻,因为两个部分句子都说明了同样的事情。从简单的逻辑上讲,前半部分实际上必须读取“从光标到当前单词的开头”。


0

...怎么用单词跳来跳去呢?(在Windows中为ctrl-left和ctrl-right)

# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.