在vim中,当我打开缓冲区时,我经常需要在文件所在的同一目录中加载另一个文件,但由于我通常不cd进入它,因此它pwd是一个父文件夹,所以我必须重新键入每个路径时间.这有什么捷径吗?或者将pwd更改为文件所在目录的方法?
例:
cd /src
vi lib/foo/file.js
Run Code Online (Sandbox Code Playgroud)
lib/foo有两个文件:file.js和file2.js
在vi中:
:e file2.js # doesn't work
Run Code Online (Sandbox Code Playgroud)
sum*_*mek 53
:Ex的简称:Explore完全符合您的要求.
hgm*_*mnz 45
我有以下三行.vimrc:
map ,e :e <C-R>=expand("%:p:h") . "/" <CR>
map ,t :tabe <C-R>=expand("%:p:h") . "/" <CR>
map ,s :split <C-R>=expand("%:p:h") . "/" <CR>
Run Code Online (Sandbox Code Playgroud)
现在,e <some-file>打开这个缓冲区.,t并,s在新的选项卡/拆分窗口上执行相同操作.
gre*_*egf 32
较新版本的vim内置了一个autochdir命令,如果没有,你可以回退到像设置一样的BufEnter.
" set vim to chdir for each file
if exists('+autochdir')
set autochdir
else
autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /
endif
Run Code Online (Sandbox Code Playgroud)
Cor*_*son 26
一个简单的想法是使用autochdir设置.在你的.vimrc中试试这个:
set autochdir
Run Code Online (Sandbox Code Playgroud)
这会将vim的工作目录更改为您打开的文件的目录.
注意:我不确定添加此功能的版本.我从vim 6更新到7.2以使其工作.
小智 15
请尝试以下方法:
:e %:p:h/file2.js
Run Code Online (Sandbox Code Playgroud)
将此行添加到您的vimrc配置中
autocmd BufEnter * cd %:p:h
Run Code Online (Sandbox Code Playgroud)
%当前文件名
:p展开到完整路径
:h head(删除最后一个路径组件)
有关:help expand详细信息,请参阅
autochdir的解决方案有其自身的缺陷.例如,你必须留在你的目录,因为标签是用相对路径定义的,或者你需要在当前目录中使用Makefile或pom.xml.
您可以使用
:e <C-R>%
Run Code Online (Sandbox Code Playgroud)
然后通过删除当前文件的名称来修改路径并输入新文件.要么.使用地图
nnoremap <leader>e :edit <C-R>=fnamemodify(@%, ':p:h')<CR>/
Run Code Online (Sandbox Code Playgroud)
然后按\e或,e(取决于领导者设置),您将收到打开当前文件所在目录的命令,您可以手动完成此命令,并可用于ctrlD显示当前文件目录中的所有文件.
要么.你可以试试0scan插件.
按键 0f