当前位置: 首页 > 知识库问答 >
问题:

如何使用URL和反斜杠禁用zsh替换/自动完成

施华奥
2023-03-14

我在Ubuntu上使用zshoh-my-zsh:14.04。

当我粘贴URL时,shell会用反斜杠自动完成转义字符。

例如环境变量:

$ wget http://{DEFAULT_IP}/index.html
It will become:
$ wget http://\{DEFAULT_IP\}/index.html

如何禁用此功能

共有3个答案

司徒隐水
2023-03-14

如果URL未被引用,反斜杠可能是必要的,这就是zsh添加它们的原因(通过<code>URL quote magic</code>)。如果您不喜欢它们,请引用URL:

$ wget '

然后粘贴URL并键入结尾引号:

$ wget 'http://{DEFAULT_IP}/index.html'

要完全禁用<code>url quote magic</code>功能:

zstyle ':urlglobber' url-other-schema

EDIT:从版本5.1开始,zsh在某些终端中支持带括号的粘贴,在这种情况下,<code>url quote magic</code>不再被使用(<code<bracketed paste magic</code>将其替换为粘贴)。

东门涵育
2023-03-14

我最终得到了这个答案,但仍然不明白为什么粘贴URL会转义像< code >这样的字符

罪魁祸首(对我来说)是Mac上的iTerm2。

要禁用该行为,请进入iTerm2

确保为正确的配置文件执行此操作。

宗涵蓄
2023-03-14

更新2019-05-12:

新版本(

DISABLE_MAGIC_FUNCTIONS=true
source $ZSH/oh-my-zsh.sh

通过:https://github.com/robbyrussell/oh-my-zsh/commit/486fa1010df847bfd8823b4492623afc7c935709

原始答案:

这是 zsh 5.1.1 ~ 5.2(当前)中的一个错误。

插件< code > bracketed-paste-magic 在zsh版本中不起作用。

问题就在这里:

    < Li > https://github . com/zsh-users/zsh-auto suggestions/issues/102 < Li > https://github . com/robbyrussell/oh-my-zsh/issues/5499 < Li > https://github . com/robbyrussell/oh-my-zsh/commit/35517457921 c 095 be 1 aa 6 ed 948 debfbe 183 b 89 AC

我建议您禁用带括号的粘贴魔法。

注释这些代码来自oh-my-zsh的~/. oh-my-zsh/lib/misc.zsh解决问题:

if [[ $ZSH_VERSION != 5.1.1 ]]; then
  for d in $fpath; do
    if [[ -e "$d/url-quote-magic" ]]; then
      if is-at-least 5.1; then
        autoload -Uz bracketed-paste-magic
        zle -N bracketed-paste bracketed-paste-magic
      fi
      autoload -Uz url-quote-magic
      zle -N self-insert url-quote-magic
      break
    fi
  done
fi

通过

 类似资料:
  • 问题内容: 我有一个字符串“ \\ u003c”,它属于UTF-8字符集。由于存在双反斜杠,因此我无法将其解码为unicode。如何从“ \\ u003c”获取“ \ u003c”?我正在使用Java。 我尝试过 但无法实现我想要的。 这是我的代码 文件的内容是 \ u003c 问题答案: 不知道您是否仍在寻找解决问题的方法(因为您已经接受了答案),但是我仍然会添加我的答案作为针对 所述问题 的可

  • 问题内容: 我正在将CSV文件导入MySQL数据库。可以通过支持文件路径中的正斜杠来实现。如果用户给出路径 MySQL不支持这种类型的路径模式。我想在路径中搜索反斜杠并将其替换为正斜杠,以实现以下目的: 怎么做? 问题答案: 在Java中,使用以下命令: 注意,这里不需要replace的正则表达式版本,即;仍会替换所有出现的搜索词,但会搜索 文字 字符串,而不是正则表达式匹配项。

  • 问题内容: 我需要在路径字符串中替换为,但是以下代码失败。 有什么有用的建议吗? 问题答案: 使用函数filepath.ToSlash将操作系统路径分隔符替换为路径中的“ /”。 在Windows上,函数返回。在其他操作系统上,该函数按原样返回path参数。

  • 问题内容: 我有以下字符串 我正在尝试这样做 如何逃避试图连接到mystr1的反斜杠? 问题答案: 您需要一个四倍的反斜杠: 原因: 正则表达式以匹配单个反斜杠: 用于描述此正则表达式的字符串:。 或者,您可以使用原始字符串,因此只需要双反斜杠即可:

  • 问题内容: 在Java中,我有一个文件路径,例如“ C:\ A \ B \ C”,我希望将其更改为“ C:/ A / B / C”。如何替换反斜杠? 问题答案: String text = “C:\A\B\C”; String newString = text.replace(“\“, “/”); System.out.println(newString);

  • 问题内容: 这是一个“到底发生了什么”的问题。我实际上不需要解决方案。 我必须用双反斜杠替换字符串中的所有单反斜杠。这就是我最终要做的… …其中strRootDirectory是上面的java.lang.String。 现在,我了解了第一个参数的四个反斜杠:regex期望两个反斜杠以表示单个文字反斜杠,而Java希望它们加倍。没关系。 但是,第二个参数的八个反斜杠到底是怎么回事?替换字符串不是应该