在vim中打开与当前文件相同的文件夹中的文件
在vim中,当我打开一个缓冲区的时候,我经常需要在文件所在的同一个目录中加载另一个文件,但是因为我通常不会进入它,所以pwd
是一个父文件夹,所以我必须重新input每一次的path。 有没有这个捷径? 或者将pwd更改为文件所在目录的方法?
例:
cd /src vi lib/foo/file.js
lib / foo有两个文件: file2.js
和file2.js
在vi中:
:e file2.js # doesn't work
较新版本的vim有一个内置的autochdir命令,如果没有,你可以回落到一个BufEnter的设置。
" set vim to chdir for each file if exists('+autochdir') set autochdir else autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ / endif
我的.vimrc
有以下三行:
map ,e :e <CR>=expand("%:p:h") . "/" <CR> map ,t :tabe <CR>=expand("%:p:h") . "/" <CR> map ,s :split <CR>=expand("%:p:h") . "/" <CR>
现在,e <some-file>
在这个缓冲区上打开,e <some-file>
。 ,t
和,s
做同样,s
事情,但在一个新的选项卡/拆分窗口。
:简要介绍:探索完全是你所要求的。
一个简单的想法是使用autochdir设置。 尝试在您的.vimrc中:
set autochdir
这会将vim的工作目录更改为您打开的文件的目录。
注意:我不确定哪个版本添加了这个function。 我从vim 6更新到7.2来使这个工作。
尝试以下操作:
:e %:p:h/file2.js
将此行添加到您的vimrc
configuration中
autocmd BufEnter * cd %:p:h
%当前的文件名
:p扩展到完整path
:h头(删除最后一个path组件)
请参阅:help expand
以获取更多信息。
autochdir的解决scheme有其自身的缺陷。 例如,您必须留在目录中,因为标记是用相对path定义的,或者您需要当前目录中的Makefile或pom.xml。
您可以使用
:e <CR>%
然后通过删除当前文件的名称来修改path并input新的文件。 要么。 使用地图
nnoremap <leader>e :edit <CR>=fnamemodify(@%, ':p:h')<CR>/
然后按\ e或e (取决于领导者设置),您将收到打开您当前文件所在目录的命令,您可以手动完成此命令,并可以使用ctrl D显示当前文件目录中的所有文件。
要么。 你可以尝试0scan插件。
键0 f
所以vim有一个find命令,它将使用variables'path'。 如果你的代码具有一致的目录结构,例如目录“src”下的所有源代码,那么你可以将它添加到“path”variables中。 然后当你这样做:findfoo.js它将search你的当前位置,然后在pathvariables中列出的文件夹。 它基本上模拟了bash或其他一些shell使用PATHvariables来查找适当的二进制文件的方式。
我把它放在我的.vimrc文件中,它将把当前目录改变为缓冲区中的文件。 这将设置缓冲区的当前目录,并在切换缓冲区时进行更新。
autocmd BufEnter * lcd %:p:h
你可能知道,一旦你在vim中,你可以使用
:cd lib/foo
换成lib / foo。
另一方面,要更改到当前正在编辑的文件的目录,请尝试
:cd %:p:h
你可以随时使用
:pwd
检查你当前的工作目录。
当然,如果你忘记了你正在编辑的文件,只需点击ctrl-g即可。
在“快捷方式”面前,你有没有看过:Sex
命令? 这将打开文件浏览器,以便您可以轻松打开其他文件。 :Sex
默认为当前缓冲区的目录。 相当漂亮的function,如果我自己这样说。
我把它绑定到;o
为了方便访问:
map ;o :Sex <CR>
您也可以使用:Ex
如果你想保留在当前的缓冲区,而不是创build一个拆分。
另一个select是做:
:e <Tab>
这循环通过您的工作目录中的文件夹。