当我们从网上的文章中复制粘贴命令时,$
开头通常会有一个。有没有办法在将其粘贴到 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
- 对于该
Replace
字段,使用:(^|\v)\h*[\$>]\h+
- 对于该
with
字段,使用:$1
请注意必须也设置$1
为该with
字段。
它还处理$
提示字符之前的任何空格以及允许>
作为提示字符。
匹配(^|\v)
行首或换行符。由于默认替换文本为空,因此我们需要使用 捕获换行符(...)
,然后使用捕获的文本$1
作为替换,从而将换行符放回原处。但仅有的将换行符放回原处。前导提示符和所有空格均被删除。
匹配\h*
零个或多个水平空格,因此即使粘贴这个也可以起作用:
$ mkdir foo
$ cd foo
这是 iTerm2 版本 3.4.19 的屏幕截图,我已将其映射Control-Command-V
到这个新Paste
命令: