iTerm2:自动删除复制的命令中的 $ 符号

iTerm2:自动删除复制的命令中的 $ 符号

当我们从网上的文章中复制粘贴命令时,$开头通常会有一个。有没有办法在将其粘贴到 iTerm 中时自动将其删除?

答案1

@Ruslanic 的回答大部分都在那里,但是正则表达式太宽泛,会删除:

  • 任何单个字符后跟空格
  • 用 # 注释掉该行
  • 一个点作为参数。

例如,ls . -l变成l. -l

此外,使用捕获组是不必要的,因为如果没有提供替换,匹配将被删除。

更安全的正则表达式是^[\$]\h

解释:

^[\$]\h
^          # Beginning of line only
 [\$]      # Match a single $ literally, could add more characters to remove if wanted
     \h    # Match a horizontal whitespace character (space or tab)

答案2

是的,使用 RegEx 可以实现。

打开 iTerm 并进入菜单:

iTerm2 -> 首选项 -> 按键。

在“键映射”下单击+并向下滚动到“粘贴...”

检查条目:

✓ 替换. (.+)$1

这将从粘贴的文本中删除第一个字符和其后的空格。

为该操作分配一个快捷方式。

点击OK

答案3

我发现这个工具非常有用:他妈的

基本上,您复制并粘贴任何以 $ 为前缀的命令,例如$ pip install tensorflow,然后输入fuck 它就会得到正确的命令:pip install tensorflow

答案4

添加到@Dash 的回答,下面是更新后的正则表达式,可用于多行文本,例如:

$ mkdir foo
$ cd foo
  1. 对于该Replace字段,使用:(^|\v)\h*[\$>]\h+
  2. 对于该with字段,使用:$1

请注意必须也设置$1为该with字段。

它还处理$提示字符之前的任何空格以及允许>作为提示字符。

匹配(^|\v)行首或换行符。由于默认替换文本为空,因此我们需要使用 捕获换行符(...),然后使用捕获的文本$1作为替换,从而将换行符放回原处。但仅有的将换行符放回原处。前导提示符和所有空格均被删除。

匹配\h*零个或多个水平空格,因此即使粘贴这个也可以起作用:

  $ mkdir foo
  $ cd foo

这是 iTerm2 版本 3.4.19 的屏幕截图,我已将其映射Control-Command-V到这个新Paste命令:

iTerm2 屏幕截图

相关内容