Ame*_*ina 17 bash line-editor inputrc
我希望能够使用 Emacs 默认使用的相同键盘绑定(即使用C-space
for set-mark
、M-w
复制文本、C-y
、M-y
粘贴它等)在 Bash 的命令行中复制和粘贴文本。
在GNU Bash的文件说,猛砸附带了一些默认设置了这些键绑定。
例如,yanking ( C-y
) 默认在我的终端上工作。但是,我无法使set-mark
和copy
命令起作用,并且默认情况下它们似乎没有绑定到任何键。
通常,用户定义自己的键绑定的方式是将它们添加到.inputrc
. 所以我在文档中查看并发现了以下 bash 函数,我认为这些函数可以帮助我定义我想要的类似 Emacs 的行为(即set-mark
withC-space
和copy
with M-w
)。
copy-region-as-kill ()
Run Code Online (Sandbox Code Playgroud)
将区域中的文本复制到终止缓冲区,以便立即将其拉出。默认情况下,此命令是未绑定的。
和
set-mark (C-@)
Run Code Online (Sandbox Code Playgroud)
将标记设置为点。如果提供了数字参数,则标记设置为该位置。
如果我理解正确的话,上面的意思copy-region-as-kill
是默认情况下不绑定到任何键盘序列,而默认情况下set-mark
绑定到C-@
。
我C-@
在我的终端上试过,但我认为它没有运行,set-mark
因为当我移动光标时我没有看到任何突出显示的文本。无论如何,我尝试将键盘绑定(M-w
和C-
)添加到my 中的函数 copy-region-as-kill
及set-mark
以上.inputrc
,然后使用 重新加载它C-x C-r
,但这不起作用。我知道我的其他条目正在.inputrc
工作,因为我在其中定义了其他用户定义的键绑定。
有什么我做错了吗?我错过了什么吗?
Mik*_*kel 12
它没有突出选择,但除此之外我认为它工作正常。
尝试跑步
$ bind -p | grep copy-region-as-kill
Run Code Online (Sandbox Code Playgroud)
以确保它C-x C-r
确实有效。
它应该说:
"\ew": copy-region-as-kill
Run Code Online (Sandbox Code Playgroud)
之后,它应该可以正常工作。
例子:
$ abc<C-Spc><C-a><M-w> def <C-y>
Run Code Online (Sandbox Code Playgroud)
给我
$ abc def abc
Run Code Online (Sandbox Code Playgroud)
如果你想知道在哪里mark
,就去做C-x
C-x
。
例子:
$ <C-Spc>abc<C-x><C-x>
Run Code Online (Sandbox Code Playgroud)
将光标放回您设置标记的位置(行的开头)。
另外,我认为您不需要添加set-mark
绑定。我没有。
$ bind -p | grep set-mark
"\C-@": set-mark
"\e ": set-mark
# vi-set-mark (not bound)
Run Code Online (Sandbox Code Playgroud)
(请注意,大多数终端C-@
在C-Spc
按下时发送。我认为您的也是如此。)
如果这一切都失败了:
emacs -nw
在同一终端上?