如果我调用vim foo/bar/somefile
,但是foo/bar
还不存在,Vim就会拒绝保存。
我知道我可以切换到shell或从Vim执行:!mkdir foo/bar
,但我很懒:)有没有办法让Vim在保存缓冲区时自动执行这一操作?
发布于 2010-11-28 03:44:41
基于对我的问题的建议,以下是我的结论:
function WriteCreatingDirs()
execute ':silent !mkdir -p %:h'
write
endfunction
command W call WriteCreatingDirs()
这定义了:W
命令。理想情况下,我希望所有的:w!
、:wq
、:wq!
、:wall
等都能正常工作,但我不确定是否有可能不用自定义函数重新实现它们。
发布于 2011-07-31 09:30:09
我将此代码添加到我的~/.vimrc
cnoremap mk. !mkdir -p <c-r>=expand("%:h")<cr>/
如果我需要创建我所在的目录,我输入:mk.
,它将其替换为"!mkdir -p /path/ to /my/file/“,并允许我在调用命令之前检查它。
发布于 2017-03-18 16:48:11
This code将提示您使用:w
创建目录,或者直接使用:w!
创建目录
augroup vimrc-auto-mkdir
autocmd!
autocmd BufWritePre * call s:auto_mkdir(expand('<afile>:p:h'), v:cmdbang)
function! s:auto_mkdir(dir, force)
if !isdirectory(a:dir)
\ && (a:force
\ || input("'" . a:dir . "' does not exist. Create? [y/N]") =~? '^y\%[es]$')
call mkdir(iconv(a:dir, &encoding, &termencoding), 'p')
endif
endfunction
augroup END
https://stackoverflow.com/questions/4292733
复制相似问题