我发现Bash shell支持一种与"传统"自动完成不同的自动完成,其中所有可能性都列在下一行.
使用"传统"自动完成功能,如果我键入ch然后Tab按键,我会得到类似的结果:
$ ch
chacl chgrp chmod chown chvt
Run Code Online (Sandbox Code Playgroud)
但是如果我/etc/inputrc将以下行添加到my (将Tab键重新映射到内置menu-complete函数):
Tab: menu-complete
Run Code Online (Sandbox Code Playgroud)
然后shell的行为发生变化:要完成的单词被替换为"inline",其中包含可能完成列表中的单个匹配,如果我再次按Tab键,则该单词将替换为下一个匹配.
我发现这很有用,但我仍然希望保留传统的自动完成功能并将其绑定到组合键Ctrl + Tab.所以我/etc/inputrc根据readline库文档的建议将以下行添加到我的文件中:
Ctrl-Tab: complete
Run Code Online (Sandbox Code Playgroud)
然而,加入这一行似乎只能使双方Tab并Ctrl-Tab调用传统complete功能.
有谁知道我做错了什么?
提前致谢!
我知道我可以从测试中抛出错误,但我想知道是否有像fail()Jasmine提供的全局方法?
我正在尝试监视我手动模拟的 ES6 类的方法。
我正在关注官方 Jest 文档,该文档仅针对 JavaScript。
这是我的代码:
// sound-player.ts
export default class SoundPlayer {
foo: string
constructor() {
this.foo = 'bar'
}
playFile(fileName: string) {
console.log(`Playing sound file: ${fileName}`)
}
}
Run Code Online (Sandbox Code Playgroud)
// __mocks__/sound-player.ts
export const mockPlayFile = jest.fn()
const mock = jest.fn().mockImplementation(() => {
return { playFile: mockPlayFile }
})
export default mock
Run Code Online (Sandbox Code Playgroud)
// sound-player-consumer.ts
import SoundPlayer from './sound-player'
export default class SoundPlayerConsumer {
soundPlayer: SoundPlayer
constructor(soundPlayer: SoundPlayer) {
this.soundPlayer = soundPlayer
}
playSomethingCool() {
this.soundPlayer.playFile('something-cool.mp3')
}
}
Run Code Online (Sandbox Code Playgroud)
// …Run Code Online (Sandbox Code Playgroud) 在Node.js中,传递给的回调内部setTimeout(),this似乎绑定到自己timeoutObject返回的setTimeout()(在严格模式和非严格模式下!):
var timeoutObject = setTimeout(function () {
console.log(this === timeoutObject); // true
}, 0);
var timeoutObject = setTimeout(function () {
'use strict';
console.log(this === timeoutObject); // true
}, 0);
Run Code Online (Sandbox Code Playgroud)
在浏览器中不是这种情况,它this被绑定(如我所料)到全局对象window(或者undefined在严格模式下).
该文档没有说明这种非标准行为.
为什么是这样?
我已经配置了一个OpsWorks堆栈并且我的层已经设置好,这样我就可以为每个启动的实例附加一个50 GB的卷.
新的EBS卷可以正确创建,附加并安装到新启动的实例.这是我第一次启动后立即看到的内容:
[root@biscotti ec2-user]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.9G 1.9G 5.9G 25% /
tmpfs 298M 0 298M 0% /dev/shm
/dev/xvdi 50G 33M 50G 1% /srv/www <---------
[root@biscotti ec2-user]# mount
/dev/xvda1 on / type ext4 (rw,noatime)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/xvdi on /srv/www type xfs (rw,noatime) <---------
Run Code Online (Sandbox Code Playgroud)
但是,如果我重新启动实例,则不会自动重新装入卷: …
Node.js似乎使用不同的规则将变量附加到global对象,无论是在REPL中还是在脚本中完成.
$ node
> var a = 1;
undefined
> a
1
> global.a
1
> a === global.a
true
Run Code Online (Sandbox Code Playgroud)
如上所示,在REPL中工作时,声明var变量并在global对象上创建一个具有该变量名称的新属性.
但是,在脚本中似乎不是这种情况:
// test.js
var a = 1;
console.log(a);
console.log(global.a);
console.log(a === global.a);
Run Code Online (Sandbox Code Playgroud)
我们来运行脚本:
$ node test.js
1
undefined
false
Run Code Online (Sandbox Code Playgroud)
为什么会这样?