导航 CLI:将文本从特定字符替换为特定字符

dot*_*hen 3 bash keyboard-shortcuts

我是一名 VIM 用户,正在学习在 Bash 中使用的 Emacs 命令。我知道在我的系统上我可以在 Bash 中使用 Vim 键绑定,但我想学习如何在默认配置中有效地使用它。

考虑以下将文件上传到 Web 服务的命令:

$ time curl -F "status_file=@under1meg.txt" -F "baz=777&bin=123&alice=bob" http://somesite.com/internal/project/status/foo/add_status.php
Run Code Online (Sandbox Code Playgroud)

我有一堆文件要上传不同的参数。以下是一些问题:

  1. 如何可能我很容易地从行结束回到之前http部分?该组合AltB仅针对每个 [az] 块返回,因此我必须针对 URL 中的每个目录进行此操作。是返回CtrlRSpace的首选方式吗?请注意,CtrlW确实删除回之前的空白,因此<something> until whitespace似乎存在的想法。

  2. 如何从当前光标位置删除回@字符?按CtrlW删除直到空格,所以这不会有帮助,因为@字符被埋在非空格中。我可以CtrlR@然后AltD删除单词,直到我到达我需要的地方,但这是相当迟钝的。没有delete until previous <something>命令吗?

请注意,我对学习如何使用默认的 Bash 配置很感兴趣,因为我经常通过 SSH 连接到某个网络服务器。我不想配置 Zsh、Vim 键绑定或.bash_profile.

ste*_*ter 5

  1. "M-C-]" character-search-backward所以M-C-] SPC在这种情况下会走之前http

  2. M-C-] @然后C-k从点到行的末尾删除(尽管您似乎只想删除到以前所在的位置。我不知道比M-d这更好的选择)。据我所知delete until previous <something>,默认情况下没有定义

我发现非常有用的是C-y它“猛拉”(粘贴)“杀死环”的内容。所以,当你C-u(从点上删除对行的开头),可以粘贴此回来C-y并按下M-y之后C-y通过其他的将周期“杀死”之前进行(C-wC-k等等)

也很高兴知道C-/哪个是undo

如果您想了解更多信息,请查看man readline(Bash 使用 readline),其中有一个简洁的部分 DEFAULT KEY BINDINGS:

       Emacs Standard bindings

       "C-@"  set-mark
       "C-A"  beginning-of-line
       "C-B"  backward-char
       "C-D"  delete-char
       "C-E"  end-of-line
       "C-F"  forward-char
       "C-G"  abort
       "C-H"  backward-delete-char
       "C-I"  complete
       "C-J"  accept-line
       "C-K"  kill-line
       "C-L"  clear-screen
       "C-M"  accept-line
       "C-N"  next-history
       "C-P"  previous-history
       "C-Q"  quoted-insert
       "C-R"  reverse-search-history
       "C-S"  forward-search-history
       "C-T"  transpose-chars
       "C-U"  unix-line-discard
       "C-V"  quoted-insert
       "C-W"  unix-word-rubout
       "C-Y"  yank
       "C-]"  character-search
       "C-_"  undo
       " " to "/"  self-insert
       "0"  to "9"  self-insert
       ":"  to "~"  self-insert
       "C-?"  backward-delete-char

       Emacs Meta bindings

       "M-C-G"  abort
       "M-C-H"  backward-kill-word
       "M-C-I"  tab-insert
       "M-C-J"  vi-editing-mode
       "M-C-M"  vi-editing-mode
       "M-C-R"  revert-line
       "M-C-Y"  yank-nth-arg
       "M-C-["  complete
       "M-C-]"  character-search-backward
       "M-space"  set-mark
       "M-#"  insert-comment
       "M-&"  tilde-expand
       "M-*"  insert-completions
       "M--"  digit-argument
       "M-."  yank-last-arg
       "M-0"  digit-argument
       "M-1"  digit-argument
       "M-2"  digit-argument
       "M-3"  digit-argument
       "M-4"  digit-argument
       "M-5"  digit-argument
       "M-6"  digit-argument
       "M-7"  digit-argument
       "M-8"  digit-argument
       "M-9"  digit-argument
       "M-<"  beginning-of-history
       "M-="  possible-completions
       "M->"  end-of-history
       "M-?"  possible-completions
       "M-B"  backward-word
       "M-C"  capitalize-word
       "M-D"  kill-word
       "M-F"  forward-word
       "M-L"  downcase-word
       "M-N"  non-incremental-forward-search-history
       "M-P"  non-incremental-reverse-search-history
       "M-R"  revert-line
       "M-T"  transpose-words
       "M-U"  upcase-word
       "M-Y"  yank-pop
       "M-\"  delete-horizontal-space
       "M-~"  tilde-expand
       "M-C-?"  backward-kill-word
       "M-_"  yank-last-arg

       Emacs Control-X bindings

       "C-XC-G"  abort
       "C-XC-R"  re-read-init-file
       "C-XC-U"  undo
       "C-XC-X"  exchange-point-and-mark
       "C-X("  start-kbd-macro
       "C-X)"  end-kbd-macro
       "C-XE"  call-last-kbd-macro
       "C-XC-?"  backward-kill-line
Run Code Online (Sandbox Code Playgroud)