这与SuperUser 上的问题相同,但我觉得它有更好的机会在这里得到回答,所以......
在 Vim 中,我有四个分割 - 两个两个 - 左上角一个 netrw 是打开的。有没有办法从 netrw 在右下拆分、左下等打开文件?
这与SuperUser 上的问题相同,但我觉得它有更好的机会在这里得到回答,所以......
在 Vim 中,我有四个分割 - 两个两个 - 左上角一个 netrw 是打开的。有没有办法从 netrw 在右下拆分、左下等打开文件?
这里有一些提示https://superuser.com/questions/377501/keep-cursor-in-netrw-window-when-browsing-files-in-vim
把它放在你的 .vimrc 中,
let g:netrw_preview = 1
配置垂直预览拆分,然后当光标位于所需文件上时,键入p以打开预览窗口。要关闭窗口,请键入CtrlWz。
vim 中使用的术语是“预览窗口”。要了解有关此的更多信息,请参阅
:help netrw-preview
:help CTRL-W_z
要不就
:help netrw
并浏览目录以获取其他浏览命令和其他 netrw 功能。
您可以设置g:netrw_chgwin
变量以使 netrw 在特定窗口中打开文件。看:
:h netrw-C
因此,要使当前窗口成为 netrw 的目标,请在该窗口中输入:
:let g:netrw_chgwin = winnr()
另一种方法是在目标窗口 ( :E
) 中启动 netrw,点击C
选择它进行编辑并用 关闭 netrw <c-o>
。
将以上答案结合在一起,得到一些启发:我将以下窗口配置与 netrw 一起使用(连同 :let g:netrw_liststyle = 2):
-------------------------------- ... Netrw-split:左上溢出 -------------------------------- ... | | | 工作| 工作| 工作| 窗口 1 | 窗口 2 | 窗口 3 | ... | | |
因此,我可以从其他每个窗口直接进入 Netrw-split。然后我把我的.vimrc:
augroup netrw 自动命令! autocmd WinLeave * if &ft !=# "netrw" | 让 g:netrw_chgwin = winnr() | 万一 autocmd 文件类型 netrw 调用 Netrw_mappings() augroup 结束
WinLeave 命令将全局 g:netrw_chgwin 变量设置为刚刚左边的窗口(除非我们在 netrw 窗口中)。因此 netrw 将在我访问它的窗口中打开任何文件,并且由于窗口布局,我可以从任何其他窗口访问 netrw。
autocmd 'filetype' 还用于在我访问 netrw 的窗口中创建一个新文件。对于这个 netrw 的 '%' 命令必须被覆盖:
功能!Netrw_mappings() noremap <缓冲区>% :call CreateInLastWindow()<cr> 结束功能
使用在窗口 g:netrw_chgwin 中创建新文件的函数:
功能!CreateInLastWindow() let l:filename = input("新文件名:") 让 l:netrwdir = b:netrw_curdir 执行 g:netrw_chgwin 。“wincmd w” 执行“编辑”。l:netrwdir.'/'.l:文件名 结束功能