遇到的问题
我之前习惯了使用typora编辑浏览md文件,但是文件一多不好管理,所以想着使用obsidian管理,为了使得显示效果与typora兼容,所以设置都采用标准markdown格式与相对路径,发现双向链接显示的绝对路径过长影响检索,有没有办法使得这里只显示文件名
预期的效果
预期效果就是右侧链接中显示文件名
我之前习惯了使用typora编辑浏览md文件,但是文件一多不好管理,所以想着使用obsidian管理,为了使得显示效果与typora兼容,所以设置都采用标准markdown格式与相对路径,发现双向链接显示的绝对路径过长影响检索,有没有办法使得这里只显示文件名
预期效果就是右侧链接中显示文件名
也许可以直接换个近似功能的插件, 建议看看 jasonmotylinski/hierarchical-outgoing-links 带层级展示笔记里的附件
整个结构是树状, 具体到每个条目就只剩文件名了
细节上, 这插件跟 Ob 自带正链面板还是有差异的, 比如它不会识别 “笔记导航到自己的章节” 的部分, 比如没有 “潜在链接探测” 以及会单独列出 “尚不存在的笔记” 等等
但也许它是更合适这个场景的
如果一定要用自带的正链面板, 似乎不太好办,
原因是不能很方便的修改 Ob 自带面板里的内容, 只能拿脚本方式动态去改:
document.querySelectorAll('.outgoing-link-pane .search-result-container .tree-item-inner .tree-item-inner-text').forEach(elem => {
elem.innerText = elem.innerText.split('/').pop();
});
其实就是把文字按 /
切割一遍, 只留最后一段
以上拿 Ob 里任何能执行脚本的工具给运行一下就行, 最简单是控制台
如果需要自动调用, 最简单的方式也许是, 每次在这面板变动后, 自动执行上述逻辑, 如下
// 运行前注意事先备份笔记!
(function() {
const outgoingLinkPaneSelector = '.outgoing-link-pane .search-result-container';
const treeItemInnerTextSelector = '.tree-item-inner .tree-item-inner-text';
function patchOutgoingLinkPane() {
const treeItemInnerTexts = document.querySelectorAll(`${outgoingLinkPaneSelector} ${treeItemInnerTextSelector}`);
treeItemInnerTexts.forEach(elem => {
elem.innerText = elem.innerText.split('/').pop();
});
}
function watchOutgoingLinkPane() {
const targetNode = document.querySelector(outgoingLinkPaneSelector);
if (!targetNode) {
console.error('Target node not found');
return;
}
const config = {
childList: true,
subtree: true,
characterData: false
};
const observer = new MutationObserver((mutationsList) => {
observer.disconnect();
if (mutationsList.some(mutation => mutation.addedNodes.length > 0)) {
patchOutgoingLinkPane();
}
observer.observe(targetNode, config);
});
observer.observe(targetNode, config);
}
watchOutgoingLinkPane();
})();
好的,我先试一下第一个插件,如果实在不行也只能算了,也就是难看了点,还是不影响使用的