不研究 發表於 2023-5-30 00:00:00

VIM实现文件快速跳转插件详解

<p>
        <span><strong>前言</strong></span></p>
<p>
        日常使用 vim 的时候经常有跳转到特定目录下某个文件的需求:</p>
<ul>
<li>
                使用 vimwiki 记笔记时会默认把所有笔记保存在目录 ~/vimwiki 下, 当我们想查看某个笔记时就打开那个目录下的某个文件;</li>
        <li>
                我平时会写一些 shell 工具, 保存在 ~/bin 目录下, 就会有在这个目录下创建或者打开文件的需求;</li>
        <li>
                如果你用 ultisnip 之类的插件的话, 就需要经常编辑不同类型文件对应的 snippets 文件;</li>
        <li>
                …</li>
</ul>
<p>
        根据我个人的使用经验, 在特定目录下打开某个文件 的需求还是很多的, 于是便写了插件 filejumper 来实现这个需求.</p>
<p>
        这个插件提供了下面这些功能:</p>
<ul>
<li>
                通过一行配置能快速定义和某个目录绑定的 command;</li>
        <li>
                通过执行 command filename 能快速打开对应目录下的某个文件, 能通过 tab 键补全文件名;</li>
        <li>
                能通过指定不同的 vim 命令以不同的模式打开文件, 如 command filename vnew 等;</li>
</ul>
<p>
        下面就会介绍如何安装, 配置已经使用这个插件.</p>
<p>
        <span><strong>安装和配置</strong></span></p>
<p>
        可以通过 <code>vim-plug</code> 进行安装:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_280850">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">plug </code><code class="bash string">'https://github.com/hiberabyss/filejumper'</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        安装完成后通过配置变量 <code>g:file_jumper_command </code>来定义不同的 command, 下面是插件默认的配置:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_695467">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">let</code> <code class="bash plain">g:file_jumper_command = {</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash spaces">   </code><code class="bash plain">\ </code><code class="bash string">"gbin"</code><code class="bash plain">: {</code><code class="bash string">'dir'</code><code class="bash plain">: </code><code class="bash functions">expand</code><code class="bash plain">(</code><code class="bash string">"$home/bin"</code><code class="bash plain">), </code><code class="bash string">'extension'</code><code class="bash plain">: </code><code class="bash string">''</code><code class="bash plain">},</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash spaces">   </code><code class="bash plain">\ </code><code class="bash string">"gwiki"</code><code class="bash plain">: {</code><code class="bash string">'dir'</code><code class="bash plain">: g:myvimwikidir, </code><code class="bash string">'extension'</code><code class="bash plain">: </code><code class="bash string">'.wiki'</code><code class="bash plain">, </code><code class="bash string">'keymap'</code><code class="bash plain">: </code><code class="bash string">'&lt;leader&gt;wg'</code><code class="bash plain">},</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash spaces">   </code><code class="bash plain">\ }</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<ul>
<li>
                gbin 之类的是命令名;</li>
        <li>
                dir 表示和这个命令绑定的目录;</li>
        <li>
                extension 表示对应目录下的文件的默认后缀名, 在打开文件时会被自动添加上去;</li>
        <li>
                keymap 表示给这个命令映射一个快捷键;</li>
</ul>
<p>
        <span><strong>如何使用</strong></span></p>
<p>
        执行 <code>gbin pyserver </code>就会默认通过 <code>tabnew ~/bin/pyserver </code>来打开对应的文件:</p>
<p>
        <img title="VIM实现文件快速跳转插件详解" alt="VIM实现文件快速跳转插件详解" src="https://zhuji.jb51.net/uploads/img/202305/f0b5ab1563818d9e075f591baa613ade.jpg"></p>
<p>
        在上面的演示中, 我们只输入了 py 然后按 tab 键就可以自动补全文件名 pyserver.</p>
<p>
        我们也可以通过添加 vim 命令来决定文件的打开方式:</p>
<p>
        <img title="VIM实现文件快速跳转插件详解" alt="VIM实现文件快速跳转插件详解" src="https://zhuji.jb51.net/uploads/img/202305/418c09e8c332aba1a8a53d58e5623eab.jpg"></p>
<p>
        从上面的演示中可以看出在使用了 vnew 或者 e 之后, vim 打开文件的方式会和默认的不一样. 我们也可以使用 <code>bot vnew </code>之类的复合命令.</p>
<p>
        <span><strong>总结</strong></span></p>
<p>
        以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。</p>
<p>
        原文链接:https://hiberabyss.github.io/2018/04/13/vim-file-jumper/</p>
頁: [1]
查看完整版本: VIM实现文件快速跳转插件详解