首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Vim:保存时创建父目录

Vim:保存时创建父目录
EN

Stack Overflow用户
提问于 2010-11-28 00:54:21
回答 4查看 30.6K关注 0票数 128

如果我调用vim foo/bar/somefile,但是foo/bar还不存在,Vim就会拒绝保存。

我知道我可以切换到shell或从Vim执行:!mkdir foo/bar,但我很懒:)有没有办法让Vim在保存缓冲区时自动执行这一操作?

EN

回答 4

Stack Overflow用户

发布于 2010-11-28 03:44:41

基于对我的问题的建议,以下是我的结论:

代码语言:javascript
复制
function WriteCreatingDirs()
    execute ':silent !mkdir -p %:h'
    write
endfunction
command W call WriteCreatingDirs()

这定义了:W命令。理想情况下,我希望所有的:w!:wq:wq!:wall等都能正常工作,但我不确定是否有可能不用自定义函数重新实现它们。

票数 21
EN

Stack Overflow用户

发布于 2011-07-31 09:30:09

我将此代码添加到我的~/.vimrc

cnoremap mk. !mkdir -p <c-r>=expand("%:h")<cr>/

如果我需要创建我所在的目录,我输入:mk.,它将其替换为"!mkdir -p /path/ to /my/file/“,并允许我在调用命令之前检查它。

票数 6
EN

Stack Overflow用户

发布于 2017-03-18 16:48:11

This code将提示您使用:w创建目录,或者直接使用:w!创建目录

代码语言:javascript
复制
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
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4292733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档