06|窗口和标签页:修改、对比多个文件的正确姿势
该思维导图由 AI 生成,仅供参考
多窗口编辑
- 深入了解
- 翻译
- 解释
- 总结
Vim多文件编辑技巧大揭秘 本文详细介绍了如何在Vim中利用窗口和标签页进行多文件编辑,以及使用快捷键和命令来实现这些功能。通过`:split`和`:vsplit`命令可以实现水平和垂直分割窗口,并且使用`<C-W>`加方向键可以在窗口之间快速跳转。另外,文章还介绍了双窗口比较功能,通过`vimdiff`或`gvimdiff`命令可以方便地比较两个文件的差异。此外,还讨论了多标签页编辑的特性和使用方法。文章还介绍了NERDTree插件,该插件可以方便地在Vim中浏览文件系统并打开文件进行编辑。总的来说,本文详细介绍了Vim窗口和标签页的使用方法,对于提高编辑效率和进行文件比较非常有帮助。
《Vim 实用技巧必知必会》,新⼈⾸单¥59
全部留言(18)
- 最新
- 精选
- 我来也老师的每一篇文章都介绍的很详细、全面。 分隔窗口,我一般都只用快捷键`<C-w>v`和`<C-w>s`. 另外的一些命令,虽然看到了也知道,但自己用的确实不多. 在窗口间跳转,使用的还算比较频繁,原本的命令又太繁琐了点. 所以就又被我替换掉了.直接用Ctrl-j/k/h/l来跳转. ``` noremap <C-j> <C-W>j noremap <C-k> <C-W>k noremap <C-h> <C-W>h noremap <C-l> <C-W>l ``` 如果是在Tmux的Vim中切换窗口,借助插件`vim-tmux-navigator`后,用同样的快捷键,可以在tmux和vim的窗口间无缝的切换. 调整窗口大小,虽然可以配合数字+<C-w>-/+/</>来,但真的是没有鼠标操作方便. 我目前好像只在这种情况下会开启鼠标的功能. 我特意配置了快捷键,来临时切换鼠标的模式. ``` " 循环设置鼠标 let g:set_mouse_value = &mouse " 获取当前的mouse值 :set mouse? function! CycleMouseValue() if g:set_mouse_value == 'a' let g:set_mouse_value = 'v' echo 'set mouse=v' elseif g:set_mouse_value == 'v' let g:set_mouse_value = 'a' echo 'set mouse=a' endif execute 'set mouse='.g:set_mouse_value endfunction nnoremap <silent> <leader>sm :call CycleMouseValue()<CR> ``` 还有一些技巧,用的就更少了. 比如`:help CTRL-W_]`用于在新窗口中打开标签所指向的地方. -------------- 多标签编辑,我也是这周才照着这篇4年前的文章简单配置了一下. [更好的使用 Vim的标签(Tab)和 Alt映射功能](https://zhuanlan.zhihu.com/p/20902166) 我操作buffer非常熟练,觉得在vim中搞Tab,还没有在iTerm2的多标签中开vim方便. 现在我能想到使用Vim标签的场景也只有一个: 在浏览项目源码时,在新Tab中不断地跳转到子函数的定义中去. 这样把新Tab一关闭,就可以迅速的退回到之前查看顶层函数的地方. 之前我都是用`<CTRL-O>`或者`<CTRL-T>`不断的回跳,或者是用全局标签,直接跳回. -------------- 提到了多buffer,多窗口,多标签,顺便再提一下`vim-airline`插件. 非常方便的在顶部显示这些信息. 这个也是看了老师的视频直播才知道这插件居然还有这个功能.
作者回复: 很好的经验总结。 有个疑问,你为什么要把鼠标关掉呢?有什么干扰吗?
2020-08-0534 - EncodedStar<C-W> 键盘上怎么按呢?
作者回复: 复习一下第 2 讲?这是 Ctrl-W。
2020-08-1082 - chris老师请教一个问题,用vim *.cpp同时打开多文件,然后想用<C-W>T将当前窗口正在看的文件放到tab页里面,却提示“已经是最后一个窗口了”;另外我用<C-W>q只是想关闭当前正在看的文件从而去看下一个文件,但直接vim就退出了。请问这是怎么回事,多文件打开并不是多窗口吗?
作者回复: 对,打开多个文件本身仍然是一个窗口。如果文件数不多的话,可以在命令行上用 -o 选项打开到多个窗口,或 -p 到多个标签页,但文件多就不合适了。折中方式,用 -p2 这样的选项指定标签页数量。
2020-09-201 - Leoorz老师,在xshell下映射了<C-Tab>,也关闭了xshell下的这个映射,但是vim中仍然不管用,有没有办法在vim中知道实际接收到终端发给vim的字符序列?
作者回复: 在shell里直接敲cat命令,然后按特殊按键,看能不能收到、显示出来。
2020-08-0761 - return今天这个 <C-W> 加各种组合, 确实有点难受呀。 老师有没有接触过 space-vim, 想请教一下老师的看法。
作者回复: 不需要记住所有快捷键的。需要用的多了,自然记住。我也没把所有的都背下来,尤其有命令行替代的。 知道 spacevim,不用。不喜欢隔着一层用,反而还要学它的一套,感觉更折腾。不过,各人口味不同,如果你喜欢就用呗。
2020-08-0521 - Geek_zhw请问怎么用Minpac安装好用的json格式化插件?
作者回复: 最简单的方式似乎是直接安装工具jq(如 sudo apt install jq),然后在Vim里用 :%!jq 来调用。
2021-01-07 - 浩浩课程中给出的第一条安装 nerdtree ,现在好像装不了了; 我现在用的是下面第二条安装 "call minpac#add('preservim/nerdtree') call minpac#add('scrooloose/nerdtree')
作者回复: 我尝试卸载再重装,没有问题。 不过,有一点是 minpac 的修改导致现在配置需要有所变化,以前是: if exists('*minpac#init') " Minpac is loaded. call minpac#init() call minpac#add('k-takata/minpac', {'type': 'opt'}) 现在需要改成: if exists('g:loaded_minpac') " Minpac is loaded. call minpac#init() call minpac#add('k-takata/minpac', {'type': 'opt'}) 不知道这和你的问题是不是有关。如果不是这个问题的话,你可以贴出错误信息来看看。
2020-10-24 - 浩浩minpac 安装 nerdtree, 显示“nerdtree not installed” 使用的是mac自带的 vim; 不是MACvim。 百度,Google 找不到minpac 安装 nerdtree 的相关资料。请问放弃minpac, 只能自己下zip解压安装吗?
作者回复: 如果有失败,恐怕需要到 minpac 的页面上去问问看。 或者,可以使用下面的命令手工安装: mkdir -p ~/.vim/pack/my/start cd ~/.vim/pack/my/start git clone https://github.com/preservim/nerdtree.git 不过,强烈推荐安装 MacVim,即使只使用终端下的 Vim。
2020-10-24 - 老王<C-W>+ 是按哪几个键?ctrl W +一起按吗?没效果啊
作者回复: Ctrl-W,然后 +
2020-08-28 - 光头丙老师,您好,NERDtree可不可以关闭预览回到文件夹列表,我查看帮助试了一遍快捷键,好像都没有好的效果。。
作者回复: 预览窗口就是原先的正常编辑窗口,一直开着,我觉得没问题吧?你难道希望只看到文件列表,看不到文件内容?就为了增大点空间吗?没理解你的意图。 如果真的想只看文件列表的话,用关掉除当前窗口外的其他窗口命令,<C-W>o,即可。
2020-08-17