Vim中缺少Emacs的重要功能,例如comint模式,并且没有可以替换它们的脚本/插件.
Vim相对于Emacs也有好处,例如模态编辑和通常更好的默认快捷方式.但是,Viper模式让我两个都有.Vimpulse还支持可视模式.不幸的是,没有任何模式可以让Emacs像Vim一样快速地工作.
所以我主要学习了Vim-in-Emacs.我错过了什么Vim功能?
我可以格式化Erlang二进制文件,以便每个字节都用十六进制写吗?也就是说,
> io:format(???, [<<255, 16>>]).
<<FF, 10>>
Run Code Online (Sandbox Code Playgroud)
我没有看到在io中做一个明显的方法:格式化文档,但也许我只是错过了一个?将二进制文件转换为列表并单独格式化其元素效率太低.
对于Erlang/OTP应用程序的日志记录活动,您只是使用包装器disk_log或其他库吗?
使用Guava的Optional类型作为方法参数的一个问题是你不能简单地写
// method declaration
public void foo(Optional<String> arg);
// compiler error
foo(Optional.absent());
Run Code Online (Sandbox Code Playgroud)
由于类型推断失败,但必须明确添加类型:
// real method call
foo(Optional.<String> absent());
Run Code Online (Sandbox Code Playgroud)
我怎么能避免呢?
Cypress 文档显示了如何声明自定义命令类型:
declare global {
namespace Cypress {
interface Chainable {
/**
* Custom command to select DOM element by data-cy attribute.
* @example cy.dataCy('greeting')
*/
dataCy(value: string): Chainable<Element>
}
}
}
Run Code Online (Sandbox Code Playgroud)
但 Typescript ESLint 对此并不满意,因为“ES2015 模块语法优于自定义 TypeScript 模块和命名空间 @typescript-eslint/no-namespace”。是否可以将其重写为导入/导出,如果可以,如何重写?或者我应该禁用这种情况的规则?
我正在追逐FireFox扩展中的一个错误.我终于设法自己看了(我以前只有报告),我无法理解我所看到的是可能的.
错误控制台中我的扩展程序中的一条错误消息是"未定义gBrowser".这本身就足够令人惊讶了,因为叠加层是在browser.xul和navigator.xul之上,我希望gBrowser两者都可以使用.更糟糕的是它发生的实际位置:nextplease.js的第101 行.也就是说,在函数内部isTopLevelDocument,只调用from onContentLoaded,只从onLoad这里调用:
gBrowser.addEventListener(this.loadType, function (event) {
nextplease.loadListener.onContentLoaded(event);
},
true);
Run Code Online (Sandbox Code Playgroud)
所以gBrowser定义了onLoad,但在某种程度上未定义isTopLevelDocument.
当我试图实际使用扩展时,我得到另一个错误:"未定义nextplease".有趣的是它发生在853和857行.也就是说,在函数内部
nextplease.getNextLink = function () {
nextplease.getLink(window.content, nextplease.NextPhrasesMap, nextplease.NextImagesMap, nextplease.isNextRegExp, nextplease.NEXT_SEARCH_TYPE);
}
nextplease.getPrevLink = function () {
nextplease.getLink(window.content, nextplease.PrevPhrasesMap, nextplease.PrevImagesMap, nextplease.isPrevRegExp, nextplease.PREV_SEARCH_TYPE);
}
Run Code Online (Sandbox Code Playgroud)
因此nextplease以某种方式定义足以调用这些函数,但未在其中定义.
最后,typeof(nextplease)在Execute JS中执行返回"object".同样的gBrowser.
怎么会发生这种情况?有任何想法吗?
特定
trait Foo {
type Bar
}
Run Code Online (Sandbox Code Playgroud)
是否有合法的方法来编写类似的东西f: (x: Foo) => x.Bar,以便函数的返回类型取决于参数?使用的一个例子是
def compareOutput(x1: Foo, x2: Foo)(f: (x: Foo) => x.Bar /* illegal */)(comparer: (x1.Bar, x2.Bar) => Boolean) = {
val y1 = f(x1)
val y2 = f(x2)
comparer(y1, y2)
}
Run Code Online (Sandbox Code Playgroud) 使用Windows键作为Meta在Emacs中非常有用,有没有办法在Vim中执行此操作?
如果条件涉及sizeof为真,我想定义一个宏,如果它是假,则不做任何事情(但仍然编译).如果支持预处理器sizeof,它将如下所示:
#if (sizeof(void*) <= sizeof(unsigned int)) // what goes here?
# define POINTER_FITS_INTO_UINT
#endif
Run Code Online (Sandbox Code Playgroud)
有一些页面(例如http://scaryreasoner.wordpress.com/2009/02/28/checking-sizeof-at-compile-time/)解释如何使一个编译时断言的sizeof(和无法编译,如果它失败了),但我没有看到一种方法将这种方法扩展到我想要的.
erlang ×3
editor ×2
vim ×2
binary ×1
c ×1
compile-time ×1
cypress ×1
emacs ×1
erlang-shell ×1
generics ×1
guava ×1
java ×1
javascript ×1
keymapping ×1
logging ×1
scala ×1
typescript ×1
vimpulse ×1
viper ×1