我使用vim进行Web开发.这几乎总是.php文件,它们也包含HTML,有时还包含Javascript.在PHP块中工作时,缩进工作正常.语法高亮是可以的,但只对PHP代码非常有用.当我想编辑一个HTML块时,我通常会切换::set ft=html,以便突出显示和缩进对此有用.当然,我一直来回切换,这很费时间.我希望所有三种语言的突出显示和缩进智能组合.能够立即=G使用整个文件并根据自己的规则使每个块工作将是非常棒的.
虽然我知道"我可以自己做",但我怀疑我是第一个想要这个的人,我正在寻找一个现有的解决方案.
谁能帮我吗?
实际上我对这棵树有一些疑问,但我会单独问他们。
我有一棵树(demo/code),这显然是一个库存的 d3 水平树,除了我附加到子节点的一个小工具提示之外。
问题是,如何让树从容器的左上角展开,而不是从 y 轴中间向外辐射?换句话说,我想以这样的方式结束:
START-----Parent 1-----Child 1
\
`---Child 2
Run Code Online (Sandbox Code Playgroud)
等等,其中 START 位于 SVG 容器的左上角。注意:子节点因此应向下和向右扩展。
我一直在研究 x 和 y 在这里如何工作,但我似乎不知道如何改变它。
由于XML Schema以正常形式阅读(是的,只想阅读模式)可能很乏味,我想知道是否有人知道vim的现有插件将以树形式显示模式,因为有几个XML编辑器做?选择此树中的节点以导航到模式的相关部分将是一个很好的加分,但不是绝对必要的.
谢谢你的帮助!
根据节点是展开还是折叠,我将节点 ID 添加到 localStorage 或删除它,例如:
var nodeState = JSON.parse(localStorage['openNodes']);
nodeState.push(d.id);
localStorage['openNodes'] = JSON.stringify(nodeState);
Run Code Online (Sandbox Code Playgroud)
(显然,我应该将其更改为点符号。)
这很有效,['3','19']如果节点 3 和 19 被扩展,给我(例如)。如果 19 个关闭,则将其从数组中删除。(您可以通过单击周围然后localStorage.openNodes在示例的控制台中执行来查看这一点)。
所以我有这个信息并且可以得到它,但是我在检索 localStorage 数据后尝试以编程方式扩展节点的各种方法似乎充其量是有问题的。无论如何,让节点扩展似乎不起作用。
我想我可以将 与d.idlocalStorage 中的项目(从来没有很多)进行比较,并通过调用模拟点击click(d),但没有骰子。就像是:
if (localStorage['openNodes']) {
var savedState = JSON.parse(localStorage['openNodes']);
for(var i = 0; i < savedState.length; i++) {
if (d.id === savedState[i]) {
// simulate click/call click()/something else
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我什至应该试着打电话click() …
这是一个演示:http://jsbin.com/okUxAvE/18/edit?js,output
我正在使用d3.behavior.zoom()(也可以进行平移).我只想要平移而没有实际变焦.现在,当你拖动树的一部分时,重绘是非常奇怪和"跳跃"(因此演示 - 看到它是知道我的意思).我假设我与点击事件有某种冲突(点击节点会扩展它们).但是,我看不出问题是什么,更不用说如何修复它了.此外,我希望用户能够通过拖动背景进行平移,而不仅仅是通过在树上方定位.
所以实际上这里有两个问题:
在使用d3.js(示例)的树布局上,我想要折叠不在已单击的分支中的节点.
例如,在上面的演示中,请尝试以下操作:
现在你应该看到"孩子1"和"孩子2"的孩子.
我希望发生以下情况:
因此,应该隐藏除"活动"分支之外的节点的子节点.
我怎样才能最好地接近这个?(当然有效,因为我将使用相当大的数据集)