iTerm-向前和向后移动一个词


164

是否可以将iTerm 2配置为使用键盘快捷键在命令行中的当前文本中前进和后退一个单词?


14
这并不能真正回答问题,但很重要:您可以在命令行中的任意位置单击Option +单击以将光标移到该位置。
David Winiecki '18

Downvoting不接受正确的答案

@ Pi-为什么您认为接受的答案不是正确的答案?1.票数最多的选票比选票出现早了将近三年。2.它提供了默认情况下不起作用的解决方案。
结构体

Answers:


47

Ctrl-[ b跳回一个字。您也可以Esc改用或Ctrl-[,然后f继续。

Ctrl+ [释放,然后按bf。或Escbf

更多信息可以在关于AskDifferent的其他讨论中找到。


3
如果有一种方法可以在按住按钮的同时快速返回大量单词,而不是必须为每个单词键入一系列按键,则更好。
user1717828

什么是“ Ctrl- [”?
许世豪

“ Ctrl- [”是指同时按下“ Ctrl”键和“ [”键。
Volsk

321

用大炮杀死苍蝇:

  • 转到首选项... > 配置文件 >
  • 加载预设...
  • 选择自然文本编辑

然后,您可以使用向后移动一个字Option ⌥+ 和使用单词向前Option ⌥+ ,移动到使用线路的起点fn+ ,并与行的末尾fn+ 。您也可以删除向后用字Option ⌥+ ,使用删除整行Command ⌘+

如果没有出现预设,请重新安装iTerm2。如果使用Homebrew + Cask安装它:

brew cask reinstall iterm2

48
这应该是公认的答案!
guyarad

3
这对我不起作用。参数:iTerm2 3.1.2,macOS 10.12.6,德语键盘。我并不孤单...
t0r0X

2
这很棒,将增加您的大多数需求。但是,它不会添加“通过CMD +左箭头/右箭头转到行的开始/结束”。对于动作,请参见:stackoverflow.com/questions/6205157/...
MikeyN0

35
看到这个答案后,我的生活发生了变化。我与妻子离婚,现在和一位超模在兰博。
Dragos Rizescu

12
请注意,这是“首选项”>“ 配置文件” >“键”>“加载预设”,而不是“首选项”>“键”>“加载首选项”
kevin

148

我喜欢以下设置。

  1. 首选项>键(或首选项>配置文件>键)
  2. 单击加号。

向前移动一个字

option+right
send escape sequence
f

后退一个字

option+left
send escape sequence
b

删除到单词的开头信用

option+delete
send hex code
0x1B 0x08

删除到字尾

fn+option+delete
send escape sequence
d

(我不确定是否记得,但是我想我从下面的jherran答案中复制了此答案并添加了更多内容。我应该在该答案的注释或建议的编辑中添加额外的信息。我不知道如何改进情况,但现在知道了。)


2
在MacOS 10.12上,我需要使用十六进制代码0x17才能删除单词的开头
midopa

就像和MacOS 10.12和zsh的魅力
塞巴斯蒂安

1
曾经有过我喝过的啤酒是最好的答案:)
无限(Infinity)

1
考虑提高jherran的答案。我认为我对他们的答案做了一些改进,可能应该建议修改而不是创建自己的答案。我有点像偷了它。
David Winiecki

引用:做Esc-b,我必须发送0x1b 0x42,对于Esc-f,我必须发送0x1b 0x46:D
Meredith

36

前进(Alt-f),向后(Alt-b)和删除(Alt-d)字

  1. 打开iTerm。
  2. 转到iTerm>首选项...>配置文件>密钥
  3. 在“配置文件快捷键”下,单击“ +”号。
  4. 输入快捷键(选项-b,选项-f,选项-d,选项左等)
  5. 对于“操作”,选择“发送转义序列”。
  6. 在输入字段中输入b,d或f。

这至少对bash有效。对于zsh,还有其他导航方式


2
我尝试添加选项+快捷键并收到有关冲突的警告消息,因为我没有意识到您可以在“首选项”>“键”>“全局快捷键”以及“首选项”>“配置文件”>“键”>“配置文件快捷键”中都配置键。在默认配置文件中配置它起作用。
David Winiecki 2015年

1
它也适用于zsh!
Andrii Abramov

2
我认为您的答案(针对相同的解决方案)是最容易理解的+1
nzaleski

1
非常有用的解释。
孔蒂

完善。您也可以使用Command + F等,以便“ Alt”键位于同一位置,并且在PC和Mac之间切换时无需进行任何调整。
friederbluemle

11

与其他答案类似,但是对于Zsh,我花了一些时间才找到它:

如果您在iTerm中使用“哦,我的Zsh”之类的Zsh,请转到:首选项> 配置文件 >密钥子菜单

点击+号

添加快捷方式组合,选择“发送转义序列”

下面的左右输入。

剩下:

[1;5D

对:

[1;5C

1
您救了我的命

这是唯一对我
有用的

最后,一个有效的简单解决方案:D感谢您与我们分享!
Periback

这应该是答案。已投票。
爱媛

2

您可以将终端设置为vi模式,set -o vi以便能够使用通常的vi运动命令(在其中添加行.bash_profile以永久存储设置。)

因此,就像在vi中一样,您可以按Esc,然后b向后移动一个单词(w表示向前),使用转到行的开头0,或者使用F+ 字符向后搜索一个字符。

点击i返回普通模式并插入。

那些熟悉vi的人可以做更多的事情。备忘单可以在这里找到


2
vim解决一切!:D
Breno Salgado

Esc然后点击I一次仅行至行首比Ctrl-a这要方便一些-这种用例通常在您只想修改命令名称时发生。所以我在vi模式下使用iTerm2中的一些键绑定更改来映射Ctrl-A并类似于转义序列Esc+0。这样,在编辑模式下结束时,这些情况甚至更快。
rfabbri

1

在此处输入图片说明

打开首选项

配置向左(和/或)向右选项键发送Esc +

如果您弄乱了预设,则可能需要加载默认预设(请注意,这可能会擦掉您的自定义按键绑定!)

在此处输入图片说明

如果执行此操作后看到奇怪的字符,则可能需要配置〜/ .inputrc或/ etc / inputrc

将此添加到您的〜/ .inputrc中:

"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

完整的示例inputrc:

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.

# Be 8 bit clean.
set input-meta on
set output-meta on

# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[7~": beginning-of-line
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line

$endif

-1

使用iTerm2 3.1.4,我可以设置以下内容而无需添加单独的键映射。

  1. 转到首选项>配置文件>密钥
  2. 左/右⌥键:选择Esc +

通过新的终端会话,您现在可以使用:

Option ⌥+ f前进

Option ⌥+ b前进

Option ⌥+ Delete ⌫删除单词


2
这与其他获得高度投票的答案有何不同?apple.stackexchange.com/a/293988/237
user151019
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.