AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 701824
Accepted
Costa Michailidis
Costa Michailidis
Asked: 2015-11-24 21:19:50 +0800 CST2015-11-24 21:19:50 +0800 CST 2015-11-24 21:19:50 +0800 CST

让 <ctrl> + <backspace> 在 gnome-terminal 和 vim 插入模式下删除单词

  • 772

似乎ctrl+W一次向后删除一个单词。太好了,但我真的很喜欢它能像大多数其他应用程序一样与ctrl+一起使用。backspace

最好的方法是什么?我需要更改来影响 gnome 终端命令、命令行 vim 和 GUI vim。

command-line
  • 5 5 个回答
  • 12011 Views

5 个回答

  • Voted
  1. terdon
    2015-11-25T03:33:58+08:002015-11-25T03:33:58+08:00

    请注意,这将在终端和默认的 emacs 模式下工作(如果Ctrl+W为您删除前面的单词,您正在使用该模式)。它不会在 bash 的 vi 模式下工作,也不会影响 vi/vim 本身。因此,这只是部分答案,但该 emacs 用户可以提供最好的答案。


    这类事情由readline库管理,其行为可以通过~/.inputrc. 编辑(或创建,如果它不存在)~/.inputrc并添加此行:

    "\C-H":"\C-W"
    

    现在,打开一个新终端,它应该可以工作了。

    解释

    \C-H实际上是Control+ BackSpace。您可以通过按Ctrl+V然后查看键码,即您要查找的键。你会看到BackSpace返回^H。

    现在,应该可以通过使用 将Control+绑定BackSpace到删除前一个单词 ( backward-kill-wordor unix-word-rubout)的 bash 函数"\C-H": backward-kill-word。但是,我无法让它工作。它与不同的键("\C-E": backward-kill-word例如,make Ctrl+ Edelete 前一个词)配合得很好,但出于某种原因,我无法让它与BackSpace.

    因此,作为一种解决方法,我们只是将Ctrl+映射Backspace到已经映射到. 因此,当您按下+时,它会被转换为+ ,而后者又会发送。我从这篇 SU 帖子中得到了这个解决方法的想法。CtrlWbackward-kill-wordCtrlBackspaceCtrlWbackward-kill-word

    • 16
  2. Marco Lackovic
    2020-01-24T01:52:50+08:002020-01-24T01:52:50+08:00

    使用Alt+Backspace代替:它就像Ctrl+一样工作Backspace,不需要任何配置。

    • 7
  3. egmont
    2015-11-25T23:54:00+08:002015-11-25T23:54:00+08:00

    直到最近,gnome-terminal 在Backspace和Ctrl+上发出了相同的代码Backspace,因此您无法在应用程序中区分这两者。

    这在 vte-0.42 中得到修复,它是今年秋天发布的 Gnome 3.18 的一部分。

    如果您使用的是 Wily,则可以在Gnome3 Staging中找到更新的软件包。

    • 4
  4. Best Answer
    alexzander
    2021-04-15T08:40:44+08:002021-04-15T08:40:44+08:00

    [对于 gnome 终端]

    使用stty工具,非常适合可视化绑定了哪些bash键盘快捷键。

    查看您当前的 bash 键盘快捷键(我的系统输出):

    stty -a
    

    我的输出:

    speed 38400 baud; rows 41; columns 76; line = 0;
    intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
    eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
    rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
    -parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
    -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon
    -ixoff -iuclc -ixany -imaxbel iutf8
    opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
    ff0
    isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
    echoctl echoke -flusho -extproc
    

    werase负责删除整个单词。

    运行它会设置ctrl+backspace在按下时擦除一个单词。

    stty werase \^H
    

    !注意:这会将此选项设置only为您当前的终端/bash 会话。为了应用这个permanently,你需要.bashrc在它的末尾添加以前的命令到文件。

    每次打开 gnome-terminal 时,都会加载 .bashrc 中的设置。

    在此之后你就可以开始了。请享用。

    [ 对于 vim 和 neovim ]

    只需将其粘贴到init.vim或vim.rc:

    " Map Ctrl-Backspace to delete the previous word in insert mode.
    " solution: https://vim.fandom.com/wiki/Map_Ctrl-Backspace_to_delete_previous_word
    noremap! <C-BS> <C-w>
    noremap! <C-h> <C-w>
    

    这将在插入模式下工作,ofc。这就是为插入模式定义它的要点。

    适用于neovim 0.5和lower版本,也适用于standard vim.

    • 2
  5. Fábio Santos
    2019-01-25T06:43:48+08:002019-01-25T06:43:48+08:00

    它适用于我的机器。只需确保您使用 master 的 tmux 和 linuxbrew 的 nvim,并且 control+backspace 也适用于 bash 和 vim!

    (也可以从 linuxbrew 获取 bash)

    • 1

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve