# 介绍
自己在使用vim进行`markdown`文件编辑的时候,虽然为vim安装了`markdown`的预览插件,并且配置了适合自己的vim编辑快捷按钮,但是对于多个markdown文件组成的笔记,很难定位到需要编辑的文件,为了解决这个问题,在这里有下面这个流程来说实现。
1. 新建`SUMMARY.md`文件,该文件做为目录文件,文件格式如如下:
```
* [run](run.md)
* [md使用](md使用/md使用.md)
* [md常用语法](md使用/md常用语法.md)
* [linux](linux/linux.md)
* [vim配置](linux/vim配置.md)
* [vim配置md文件跳转](linux/vim配置md文件跳转.md
```
2. 为markdown文件编辑时写一个跳转函数,并配置快捷键,实现在`SUMMARY.md`处选对应目录行后调用函数,新建指定文件或者打开已经存在的文件进行修改,该功能实现如下所示:
```vim
func! Mdgoto()
"当只有当前编辑文件为 SUMMARY.md时才执行后面的内容
if expand('%:t') != 'SUMMARY.md'
return
endif
"获取光标当前行的字符
let currentLine = getline(".")
”获取光标当前行的字符的字符数
let len = strlen(currentLine)
"echo currentLine
"获得当前行括号中的字符内容,做为对应的文件名
let a1= stridx(currentLine, '(') + 1
let a2= stridx(currentLine, ')') - 1
let a3 = a2-a1+1
if a3 > 0
let sub=strpart(currentLine,a1,a3)
endif
"打开这个文件,如果不存在文件则创建,否则直接打开编辑
exec "vsp " .sub
"调整打开后新文件的窗口占用屏幕大多数空间
vertical res +200
endfunction
"配置上述函数执行的快捷键为 ctrl+]
autocmd Filetype markdown map :call Mdgoto()"
"配置编辑markdown文件是 Ctrl+q为保存当前文件并退出当前文件
autocmd Filetype markdown map :wq"
```
**需要注意的是:** 上述快键键要能生效,首先你的文件一定要是`markdown`文件,其次函数要能执行,你的文件名一定要是`SUMMARY.md`,最后是你的`SUMMARY.md`文件必须是上面示例的格式,并且不能有空行出现,当空行出现时,我们同步到看云时,这个生成目录为出现问题。
# 效果
![Image](https://img.kancloud.cn/af/0f/af0f8e5a7228cd09de6ecd7ad2f88569_674x724.png)
![Image](https://img.kancloud.cn/80/de/80de30301f2f29340ea2704c7aba4877_680x767.png)
# 补充说明
刚开始的时候使用的是shell写的`run`脚本读取`SUMMAR.md`文件,根据文件内容在生成对应的markdown文件,这中方式使得我每次修改了`SUMMARY.md`文件后都要执行一次`run`脚本,所有不太方便。
而是用上面提到的方法,可以不在依赖额外的shell脚本,直接使用快捷键完成新建文件和打开已有的`markdown`文件,并且能够实现从目录文件跳转到指定目录的文件下进行编辑!