在 Vim netrw 中创建一个新文件但不打开缓冲区

问题描述 投票:0回答:2

我有 VIM netrw split 设置来打开右侧预览缓冲区中的任何文件,并且效果很好。

我的问题是,当我通过 % 命令创建新文件时,新文件会在 netrw 缓冲区中自动打开。我想在预览缓冲区中打开新创建的文件,而不是在 netrw 缓冲区中。这可能吗?

感谢您提前的帮助。

vim netrw
2个回答
5
投票

我认为你必须覆盖映射。

autocmd filetype netrw call Netrw_mappings()
function! Netrw_mappings()
  noremap <buffer>% :call CreateInPreview()<cr>
endfunction

在此函数中,您将必须重建 netrw 函数,但这并不难:

function! CreateInPreview()
  let l:filename = input("please enter filename: ")
  execute 'pedit ' . b:netrw_curdir.'/'.l:filename
endf

注意:这只会在预览中打开缓冲区。它不会保存文件。

如果你只是想创建文件,而不在任何地方打开它,你可以使用外部命令

touch
(至少在Unix系统中)。

function! CreateInPreview()
  let l:filename = input("please enter filename: ")
  execute 'silent !touch ' . b:netrw_curdir.'/'.l:filename 
  redraw!
endf

0
投票

一个简单的解决方案是,您可以简单地在 netrw 中运行普通的 bash 命令

:!touch test.txt
。这样你就可以创建一个文件,而netrw不会进入该文件。

© www.soinside.com 2019 - 2024. All rights reserved.