为啥 IntelliJ 不断从这个 JavaScript 模板字符串中删除反引号?
Posted
技术标签:
【中文标题】为啥 IntelliJ 不断从这个 JavaScript 模板字符串中删除反引号?【英文标题】:Why does IntelliJ keep removing backticks from this JavaScript template string?为什么 IntelliJ 不断从这个 JavaScript 模板字符串中删除反引号? 【发布时间】:2017-09-17 10:56:03 【问题描述】:我想在我的template strings 周围加上“反引号”。
IntelliJ 每次我尝试将它们缠绕在字符串上时都会删除它们。
任何人都知道它为什么会发生以及如何解决这个问题?
我在我的 .vue 文件中添加了一个小代码 sn-p 出现问题的地方。想象一下 html、js 和 css 写在一个组件 (.vue) 文件中,由唯一的标签(模板、脚本和样式标签)分隔。 我正在使用带有 Mac OS X 10.5+ 键盘映射的德语键盘布局。
import axios from "axios";
import 'vue-animate/dist/vue-animate.min.css';
export default
name: 'hello',
data ()
return
msg: `Service is <strong>ONLINE</strong> and <strong>READY</strong> to operate`,
clicked: false,
iconURL:"./../../static/img/meditate.svg",
meditationAction: this.activateMeditation,
backgroundImage: "",
room:"Bad"
,
methods:
activateMeditation ()
this.clicked = !this.clicked;
axios.get(`http://localhost:5005/$this.room/shuffle/on`).then(response =>
console.info("SUCCESSFULLY ACTIVATED SHUFFLE");
axios.get(`http://localhost:5005/$this.room/volume/20`).then(response =>
console.info("SUCCESSFULLY SET VOLUME TO 20");
axios.get("http://localhost:5005/bad/sleep/900").then(response =>
console.info("SUCCESSFULLY SET SLEEP TIME TO 15 MINUTES");
axios.get("http://localhost:5005/bad/playlist/med").then(response =>
console.info("SUCCESSFULLY SET PLAYLIST TO MED");
this.iconURL = "./../../static/img/stop.svg";
this.meditationAction = this.pausePlayback;
axios.get("http://localhost:5005/bad/state").then(response =>
console.info("SUCCESSFULLY RETRIEVED STATE");
console.log(response);
//FIXME: USE IMAGE OF CURRENT TRACK INSTEAD OF NEXT TRACK
this.backgroundImage = response.data.nextTrack.absoluteAlbumArtUri;
)
.catch((error)=>
console.log(error);
);
)
.catch((error)=>
console.log(error);
);
)
.catch((error)=>
console.log(error);
);
)
.catch((error)=>
console.log(error);
);
)
.catch((error)=>
console.log(error);
this.iconURL = "./../../static/img/attention.svg";
this.meditationAction = this.resetButton;
);
,
pausePlayback()
axios.get("http://localhost:5005/bad/pause").then(response =>
console.info("SUCCESSFULLY PAUSED PLAYBACK");
this.iconURL = "./../../static/img/meditate.svg";
this.meditationAction = this.activateMeditation;
this.backgroundImage = "";
)
.catch((error)=>
console.log(error);
);
,
resetButton()
this.iconURL = "./../../static/img/meditate.svg";
this.meditationAction = this.activateMeditation;
*
box-sizing: border-box;
.logo
max-width:50%;
.svg
height:5em;
z-index:100;
.option .svg .st0
fill: white;
stroke: white;
.options__container
display:flex;
justify-content: center;
align-items: center;
width:100%;
.option
display:flex;
justify-content: center;
align-items: center;
height:3em;
width:3em;
position:relative;
background-size:cover;
padding:3em;
border-radius:100%;
background-color:white;
border-top:3px solid black;
border-bottom:5px solid #303030;
border-left:3px solid black;
border-right:7px solid #303030;
transition: all 300ms ease-in;
.option__background-image
position:absolute;
background-color:white;
opacity:0.8;
top:0;
left:0;
height:100%;
width:100%;
border-radius: 100%;
.option:hover
border:3px solid black;
<div class="hello">
<img class="logo" src="https://upload.wikimedia.org/wikipedia/commons/1/10/Sonos_2015-Logo.png"/>
<h2 v-html="msg"></h2>
<div class="options__container">
<a class="option" v-on:click="meditationAction" v-bind:class="'animated flash' : clicked" :style="backgroundImage: 'url(' + backgroundImage +')'" >
<div class="option__background-image" ></div>
<img class="svg" :src=iconURL>
</a>
</div>
</div>
【问题讨论】:
我看这个 gif 越多,我就越不明白发生了什么。请您提供原始代码 sn-p (作为文本)并描述要重复的步骤吗?你的系统键盘布局是什么? 我已经为我正在处理的组件添加了代码 sn-p 并添加了一些描述以进一步解释内容结构。我希望这会有所帮助。 那么,您的代码中有axios.get(http://localhost:5005/$this.room/shuffle/on).then(response =>
,并试图用反引号包围“localhost:5005/$this.room/shuffle/on”?或者,尝试用反引号替换引号?要么?你的键盘布局是什么?
是的,我尝试用反引号环绕 "localhost:5005/$this.room/shuffle/on"。但是用反引号替换双引号也不起作用。我正在使用 QWERTZ 键盘布局。
可能是youtrack.jetbrains.com/issue/WEB-21750问题;请关注它以获取更新
【参考方案1】:
禁用插入对引用选项是一个不好的解决方法,解决此问题的更好方法是创建带有反引号的实时模板。
只需转到首选项 -> 编辑器 -> 实时模板,使用包含 `` 的快捷词(我的形式是 tpl)创建一个自定义模板,然后在代码中使用它只需键入 tpl+ Tab 键并完成
【讨论】:
【参考方案2】:另一种解决方法是在另一个位置写一个反引号并将其复制/粘贴到模板周围。
【讨论】:
【参考方案3】:我也有同样的问题。我通过禁用 Preferences -> Editor -> General -> Smart Keys 中的“插入对引号”选项来解决它。
当然,它禁止插入所有类型的引号,包括单引号和双引号。这是一个临时的解决方法,但我个人宁愿实际上能够使用 JS 的模板字符串,尽管每次都必须输入一对引号。
【讨论】:
似乎是目前最好的解决办法。谢谢:) 在 ES6 或 7 中实现正确的字符串格式函数是一个更简单的解决方法。python 方法如何调用每个字符串的内置格式函数。这是格式化字符串的最快方法,因为如果您想使用格式化,您无需更改任何内容。以上是关于为啥 IntelliJ 不断从这个 JavaScript 模板字符串中删除反引号?的主要内容,如果未能解决你的问题,请参考以下文章
为啥刷新 Maven 存储库对于 IntelliJ 来说还不够?
为啥 IntelliJ 中的一些 maven 项目是灰色的?
Intellij 不断编译 TypeScript(非常慢) - 如何阻止这种行为?