如何配置Netrw,使预览/新建文件时替换当前编辑窗口而非分屏或自身窗口?
嘿,这两个Netrw的小问题确实有点闹心,不过咱们可以通过自定义映射和简单的Vim函数来完美解决!下面是针对每个问题的具体方案:
问题1:让「p」命令在右侧编辑窗口预览(而非新建分屏)
Netrw默认的「p」命令会打开独立的预览窗口,咱们可以给Netrw缓冲区单独映射「p」,让它直接在右侧的编辑窗口打开文件,之后自动切回左侧Netrw窗口,模拟预览效果。
把这段配置加到你的.vimrc里:
autocmd FileType netrw nnoremap <buffer> p :call NetrwPreviewInRight()<CR> function! NetrwPreviewInRight() let target_file = expand("<cfile>") " 只处理文件,忽略文件夹 if !isdirectory(target_file) " 切换到右侧窗口 wincmd l " 在右侧窗口打开目标文件 execute "edit " . target_file " 切回左侧Netrw窗口 wincmd h endif endfunction
这样按「p」的时候,右侧窗口会直接显示目标文件,同时保持左侧Netrw窗口的焦点,完全符合你想要的预览体验~
问题2:让「%」命令在右侧编辑窗口新建文件(而非替换左侧Netrw窗口)
默认的「%」会在当前Netrw窗口创建新文件,咱们同样自定义「%」的映射,让它在右侧窗口创建文件,之后刷新Netrw显示新文件。
把这段配置也加到.vimrc里:
autocmd FileType netrw nnoremap <buffer> % :call NetrwNewFileInRight()<CR> function! NetrwNewFileInRight() let new_filename = input("Create new file: ") if new_filename != "" " 切换到右侧窗口 wincmd l " 在右侧窗口新建并打开文件 execute "edit " . new_filename " 切回左侧Netrw窗口 wincmd h " 刷新Netrw列表,显示刚创建的新文件 normal! R endif endfunction
现在按「%」输入文件名后,新文件会直接在右侧编辑窗口打开,左侧的Netrw也会自动刷新显示这个新文件,完美解决窗口被替换的问题!
内容的提问来源于stack exchange,提问作者Libertarian
相关产品推荐
相关产品推荐

