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

时间:2017-08-06 20:33:39

标签: vim netrw

我有VIM netrw split设置打开右侧预览缓冲区中的任何文件,它工作正常。

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

我认为你必须覆盖映射。

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