创建一个新文件但不在 Vim netrw 中打开缓冲区
Create a new file but not open a buffer in Vim netrw
我有 VIM netrw split 设置来打开右侧预览缓冲区中的任何文件,它工作正常。
我的问题是,当我通过 % 命令创建新文件时,一个新文件会自动在 netrw 缓冲区中打开。我想在预览缓冲区中打开新创建的文件,而不是在 netrw 缓冲区中。这可能吗?
提前感谢您的帮助。
我想你必须覆盖映射。
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
我有 VIM netrw split 设置来打开右侧预览缓冲区中的任何文件,它工作正常。
我的问题是,当我通过 % 命令创建新文件时,一个新文件会自动在 netrw 缓冲区中打开。我想在预览缓冲区中打开新创建的文件,而不是在 netrw 缓冲区中。这可能吗?
提前感谢您的帮助。
我想你必须覆盖映射。
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