【问题标题】:Create a new file in the directory of the open file in vim?在vim中打开文件的目录下新建一个文件?
【发布时间】:2012-11-05 20:02:21
【问题描述】:

我发现自己处于要在与打开文件所在目录相同的目录中创建新文件的位置。如何在 vim 中打开文件的目录中创建新文件?另外,有没有可以自学的地方?谷歌搜索没有帮助。

【问题讨论】:

  • 你说的是 Linux 上的文本编辑器 vim 吗?

标签: vim


【解决方案1】:

在 Vim 中,通过 :edit filename:split filename 等命令创建新文件,就像编辑现有文件一样。要将它们持久化到磁盘,您需要(可选地输入内容并)通过:write 持久化它们。

和命令提示符一样,Vim 有一个当前目录的概念(:pwd 列出了它)。所有文件路径都是相对于它的。您不需要复制当前文件的路径,它们有一些不错的快捷方式:% 指当前文件,:h 是其目录的修饰符,减去文件名(cp.@987654327 @)。所以,

:e %:h/filename
:w

会在当前打开的文件所在目录下新建一个名为filename的文件,并写入。

另外,有些人喜欢 Vim 总是切换到当前文件的目录。这可以通过放置来配置

:set autochdir

进入你的~/.vimrc 文件(在 Vim 启动时读取)。那么,上面就变得简单了

:e filename
:w

最后,Vim 有一个很棒的内置 :help。学习导航和搜索!

【讨论】:

  • autochdir 很不稳定,不幸的是,我发现我不能依赖它。相反,我在我的 vimrc 中放了一个 autocmd:autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /
  • Dawg 也想为您的答案投票,但 Dawg 没有必要的代表。感谢您写得很好的解释!
【解决方案2】:

你应该试试“nerdtree”插件。 在 nerdtree 窗口中,您键入 key m,文件操作选项将显示给您

【讨论】:

    【解决方案3】:

    如果您想创建一个新文件并将其显示在当前文件旁边的窗口中,您可以试试这个:

    :vsp newfile
    

    vsp 代表vertical split,它将屏幕分成两半,一个显示您当前的文件,另一个显示您的新文件(也适用于仅sp,这是一个水平分割)。

    根据上面@MartinLyne 的评论,这将在您打开vim 的文件的目录中创建文件。要对此进行调整,您可以按如下方式更改当前工作目录:

    :cd %:p:h
    

    此命令将当前工作目录更改为活动文件的目录,这意味着运行vsp 命令(或上述任何命令)将在该目录中创建文件。

    【讨论】:

      【解决方案4】:

      当你在不存在的位置打开 vim 时,比如 $ vim /etc/<some_folder/<next_folder>/file.cfg

      然后在 vim 中创建一个新目录,只需在正常模式下运行 :! mkdir -p /etc/<some_folder/<next_folder>,然后像往常一样保存你的文档 :w :x ZZ(随你喜欢)

      就是这样

      【讨论】:

        【解决方案5】:

        这是给 Gvim 的! 输入这个来查看当前目录。

        :cd
        

        然后改变它

        :cd desktop/somefolder
        

        然后在那里保存或制作新文件

        :enew asd.cpp
        

        现在再次查看文件

        :cd
        

        【讨论】:

          【解决方案6】:

          我参加聚会已经很晚了,但另一种选择是使用:E:Explore(或其拆分替代方案:Vexplore/:Sexplore == :Vex/:Sex)打开NERDtree。

          在 NerdTree 中,您可以使用% 创建一个新文件,然后输入名称。它会自动打开文件,并在你:w/保存后创建它。

          【讨论】:

          • 是的,我使用重映射打开 NerdTree nnoremap <leader>pv :wincmd v<bar> :Ex <bar> :vertical resize 30<CR>% 对它很有帮助。
          【解决方案7】:

          NERDtree

           ma <FILENAME>
           ma <DIRECTORY NAME> + /
          

          【讨论】:

            【解决方案8】:

            我通常使用:

            :tabnew my-file
            

            然后添加一些内容:

            :w
            

            它将使用新文件创建新标签。

            (我使用 Vim 8)

            【讨论】:

              猜你喜欢
              • 2016-09-12
              • 1970-01-01
              • 1970-01-01
              • 2014-05-06
              • 2014-02-20
              • 2017-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多