如何在Vim中创建一个新目录和一个文件

hjm*_*hjm 41 vim

当使用Vim作为文本编辑器时,有没有办法在文本编辑器模式下创建新目录和文件?而不是返回命令行并创建新的目录和文件.

Jak*_*rth 38

我会为这些命令中的任何一个发出警告.在命令模式下:

:! touch new-file.txt
:! mkdir new-directory
Run Code Online (Sandbox Code Playgroud)

这些类型的动作的一个很好的插件是vim-eunuch,它为UNIX shell命令提供了大量的糖.以下是使用vim-eunuch的后一个例子:

:Mdkir new-directory
Run Code Online (Sandbox Code Playgroud)


bon*_*iii 35

切换到文件浏览模式

:Ex 或者如果那不起作用 :Explore

然后按

d

并添加新目录名称.

  • @PedroLuz 你能不能更具体一点,什么对你不起作用?:Ex 是 :Explore 的简写,请查看 vim 帮助 ```help :Explore``` (2认同)

小智 22

如果您处于文件资源管理器模式,则可以使用:

d 用于创建目录

% 用于创建新文件

无需使用外部命令 !

  • 要在 vim 中打开资源管理器模式,请使用 `:Sexplore` 或 `:Vexplore`。 (4认同)

GGG*_*ser 17

假设您只是在不存在的目录中的新文件上运行 vim:

vim new_dir/new_file.txt
Run Code Online (Sandbox Code Playgroud)

当您尝试 :w 时,您将收到“E212:无法打开文件进行写入”
要创建新目录和文件,请使用以下命令:

:!mkdir -p %:h
Run Code Online (Sandbox Code Playgroud)

  • 工作完美,特别是如果您为此添加快捷方式/功能 (3认同)
  • 我想知道“%:h”到底是什么意思:“%”:文件名(vim 的参数)。`:h`:除了最后一个组件之外的所有内容。记录在这里:https://vim.fandom.com/wiki/Get_the_name_of_the_current_file (2认同)

Ray*_*Luo 7

为了完整性:

  • 外壳并使用常规命令,例如:!mkdir my_dir:!touch foo.txt(如Jake的答案在此处所述)将在CURRENT工作目录中创建目录和文件,该目录是您在开始时启动当前vim进程时的目录,但不必是同一目录当前正在编辑的文件的名称,或:Explore资源管理器当前正在查看的目录。如有疑问,请始终:!pwd先检查当前的工作目录,并在必要时使用相对路径。

  • 因此,如果您的项目包含多个子目录,一种更方便的方法是:

    1. 键入:Explore以首先进入资源管理器模式,
    2. 然后您可以轻松地导航至所需的任何子目录,方法是输入up-arrowdown-arrow(或jk)移动光标,输入Enter要输入的子目录,然后输入-要上一级的目录。(请注意,所有这些导航也不会更改您当前的工作目录);
    3. 现在,您可以输入d要提示输入的目录名,或输入%要提示输入的文件名,然后将它们创建在屏幕上当前显示的目录中。PS:内置帮助中实际上提到了这些键F1


alv*_*his 6

或者,您可以使用:e .进入资源管理器模式,然后点击d. 创建新目录。认为更短的答案可能会更好