当前位置: 首页 > news >正文

Vim 分屏操作详解

Vim 分屏操作详解

📚 基础分屏命令

1.创建分屏

" 水平分割当前窗口(上下分屏) :sp[lit] [文件名] " 简写 :sp :split [文件名] " 垂直分割当前窗口(左右分屏) :vsp[lit] [文件名] " 简写 :vs :vsplit [文件名] " 在新标签页中打开分屏 :tab split [文件名] " 在新标签页中分屏

2.快速创建分屏

Ctrl-w s " 水平分割当前窗口(等价于 :sp) Ctrl-w v " 垂直分割当前窗口(等价于 :vs) " 从命令行打开多个文件分屏 vim -o file1 file2 file3 " 水平分屏打开多个文件 vim -O file1 file2 file3 " 垂直分屏打开多个文件 vim -o *.py " 水平分屏打开所有.py文件 vim -O *.js *.html *.css " 垂直分屏打开多个类型文件

🎯 窗口导航

1.基本导航

Ctrl-w h " 移动到左边的窗口 Ctrl-w j " 移动到下边的窗口 Ctrl-w k " 移动到上边的窗口 Ctrl-w l " 移动到右边的窗口 Ctrl-w w " 循环切换到下一个窗口 Ctrl-w W " 循环切换到上一个窗口 Ctrl-w t " 移动到左上角的窗口(top-left) Ctrl-w b " 移动到右下角的窗口(bottom-right) Ctrl-w p " 移动到前一个访问的窗口(previous)

2.快速跳转

" 使用数字前缀跳转到特定窗口 2 Ctrl-w w " 跳转到第2个窗口 3 Ctrl-w j " 向下跳转3个窗口 " 跳转到特定窗口(如果有编号) :windo[wind] [命令] " 在所有窗口执行命令 :1windo echo "窗口1" " 在窗口1执行命令

📐 窗口调整

1.大小调整

" 增加/减少高度 Ctrl-w + " 增加窗口高度 Ctrl-w - " 减少窗口高度 10 Ctrl-w + " 增加10行高度 5 Ctrl-w - " 减少5行高度 " 设置精确高度 :res[ize] 20 " 设置当前窗口高度为20行 :resize +5 " 高度增加5行 :resize -3 " 高度减少3行 " 增加/减少宽度 Ctrl-w > " 增加窗口宽度 Ctrl-w < " 减少窗口宽度 10 Ctrl-w > " 增加10列宽度 5 Ctrl-w < " 减少5列宽度 " 设置精确宽度 :vert[ical] res[ize] 80 " 设置当前窗口宽度为80列 :vertical resize +10 " 宽度增加10列 :vertical resize -5 " 宽度减少5列

2.等分窗口

Ctrl-w = " 使所有窗口等宽等高(平均分配) " 最大化和恢复 Ctrl-w _ " 最大化当前窗口高度(_:下划线) Ctrl-w | " 最大化当前窗口宽度(|:管道符) Ctrl-w = " 恢复为平均分配

🔄 窗口操作

1.关闭窗口

" 关闭当前窗口 :q[uit] " 关闭当前窗口(如果最后窗口则退出vim) :clo[se] " 关闭当前窗口(close) Ctrl-w c " 关闭当前窗口(等同于 :close) Ctrl-w q " 关闭当前窗口并退出(如果最后窗口则退出) " 关闭其他窗口 :on[ly] " 只保留当前窗口,关闭其他所有窗口(only) Ctrl-w o " 只保留当前窗口(等同于 :only) " 强制关闭(不保存) :q! " 强制关闭当前窗口 :clo! " 强制关闭当前窗口

2.移动窗口

" 交换窗口位置 Ctrl-w x " 交换当前窗口与下一个窗口 Ctrl-w r " 向右/向下旋转窗口 Ctrl-w R " 向左/向上旋转窗口 " 移动窗口到新位置 Ctrl-w H " 将当前窗口移动到最左边 Ctrl-w J " 将当前窗口移动到最下边 Ctrl-w K " 将当前窗口移动到最上边 Ctrl-w L " 将当前窗口移动到最右边 " 移动窗口到新标签页 Ctrl-w T " 将当前窗口移动到新标签页

3.布局管理

" 改变布局方向 Ctrl-w K " 将窗口移动到顶部(垂直变水平) Ctrl-w H " 将窗口移动到左侧(水平变垂直) " 重新排列窗口 :windo wincmd K " 将所有窗口垂直排列 :windo wincmd H " 将所有窗口水平排列

📁 文件操作

1.在不同窗口打开文件

" 在当前窗口打开新文件 :e[dit] 新文件 " 编辑新文件 :sp[lit] 新文件 " 在新窗口水平打开 :vs[plit] 新文件 " 在新窗口垂直打开 " 在指定窗口打开文件 :sb[uffer] 3 " 在水平分割窗口打开缓冲区3 :vertical sbuffer 3 " 在垂直分割窗口打开缓冲区3 " 打开文件到指定方向 :abo[veleft] sp file " 在左边/上边打开 :bel[owright] sp file " 在右边/下边打开 :lefta[bove] vs file " 在左边垂直打开 :rightb[elow] vs file " 在右边垂直打开

2.缓冲区操作

" 列出所有缓冲区 :ls " 列出所有缓冲区 :buffers " 列出所有缓冲区 " 在分屏中切换缓冲区 :sb 2 " 分屏打开缓冲区2 :vert sb 2 " 垂直分屏打开缓冲区2 " 在分屏中打开最近的文件 :sp # " 水平分屏打开上一个文件 :vs # " 垂直分屏打开上一个文件

🎪 高级技巧

1.标签页与分屏结合

" 在标签页中创建分屏 :tabnew " 新建标签页 :tabe[dit] file " 在新标签页打开文件 :tab split " 在新标签页分屏打开当前文件 " 标签页间移动窗口 Ctrl-w T " 将当前窗口移动到新标签页 " 标签页中的分屏导航 gt " 下一个标签页 gT " 上一个标签页 5gt " 跳转到第5个标签页

2.会话管理

" 保存窗口布局 :mks[ession] mysession.vim " 保存会话 :source mysession.vim " 恢复会话 " 启动时恢复布局 vim -S mysession.vim " 启动时加载会话 " 自动保存会话(在.vimrc中配置) set sessionoptions+=winpos " 保存窗口位置 set sessionoptions+=resize " 保存窗口大小

3.快捷键映射

" 在.vimrc中添加自定义分屏快捷键 " 更便捷的分屏快捷键 nnoremap <Leader>s :split<CR> nnoremap <Leader>v :vsplit<CR> nnoremap <Leader>q :close<CR> " 快速窗口导航(避免Ctrl-w前缀) nnoremap <C-h> <C-w>h nnoremap <C-j> <C-w>j nnoremap <C-k> <C-w>k nnoremap <C-l> <C-w>l " 快速调整大小 nnoremap <Leader>= <C-w>= nnoremap <Leader>_ <C-w>_ nnoremap <Leader>\| <C-w>\|

📋 实用工作流

1.代码编辑

" 1. 同时查看头文件和源文件 :sp header.h :vs source.c " 2. 多文件对比 :vsp file1.txt :vert diffsplit file2.txt " 垂直分屏并比较差异 " 3. 多目录文件编辑 :e dir1/file1.py :vs dir2/file2.py

2.日志查看

" 同时监控多个日志文件 :sp /var/log/nginx/access.log :sp /var/log/nginx/error.log :sp /var/log/syslog " 快速切换并刷新 :windo :e! " 所有窗口重新加载文件

3.配置文件编辑

" 同时编辑相关配置文件 :sp ~/.bashrc :sp ~/.vimrc :sp ~/.gitconfig " 保持同步编辑 :windo set syntax=sh " 所有窗口设置为sh语法高亮

🛠️ 实用命令集

1.窗口管理命令

" 显示窗口信息 :ls " 显示缓冲区列表 :files " 显示文件列表 :windows " 显示窗口列表 :buffer " 显示当前缓冲区 " 窗口操作命令 :new [文件] " 新建水平窗口 :vnew [文件] " 新建垂直窗口 :sview [文件] " 以只读模式水平分屏 :vertical sview [文件] " 垂直分屏只读模式

2.布局命令

" 保存和恢复布局 :mksession! ~/.vim/session.vim " 保存当前布局 :source ~/.vim/session.vim " 恢复布局 " 自动命令(在.vimrc中) autocmd VimLeave * mksession! ~/.vim/session.vim " 退出时保存 autocmd VimEnter * source ~/.vim/session.vim " 启动时加载

3.文件比较模式

" 启用差异模式 :diffthis " 当前窗口启用差异模式 :dif " 同上简写 " 对比两个文件 :vert diffsplit file2 " 垂直分屏比较 :diffsplit file2 " 水平分屏比较 " 同步滚动 :set scrollbind " 绑定滚动 :set noscrollbind " 取消绑定 " 差异模式导航 ]c " 跳转到下一个差异点 [c " 跳转到上一个差异点 " 应用差异 dp " 将当前差异应用到另一文件(diff put) do " 将另一文件的差异应用到当前文件(diff obtain)

⚙️ 配置优化

1..vimrc 配置示例

" 分屏相关配置 set splitbelow " 新窗口出现在下方 set splitright " 新窗口出现在右侧 " 窗口导航快捷键 nnoremap <C-J> <C-W><C-J> nnoremap <C-K> <C-W><C-K> nnoremap <C-L> <C-W><C-L> nnoremap <C-H> <C-W><C-H> " 调整窗口大小 nnoremap <silent> <Leader>+ :vertical resize +5<CR> nnoremap <silent> <Leader>- :vertical resize -5<CR> nnoremap <silent> <Leader>> :resize +5<CR> nnoremap <silent> <Leader>< :resize -5<CR> " 快速关闭窗口 nnoremap <Leader>q :q<CR> " 保持窗口大小 autocmd VimResized * :wincmd = " 调整终端大小时重新平衡窗口

2.插件推荐

" 1. vim-tmux-navigator - 统一vim和tmux导航 " 2. vim-maximizer - 一键最大化窗口 " 3. vim-ctrlspace - 缓冲区和工作区管理 " 4. vim-windowswap - 交换窗口内容 " 5. golden-ratio - 自动调整窗口大小

🎓 学习建议

1.练习顺序

1. 先掌握基本分屏 :sp 和 :vs 2. 熟练窗口导航 Ctrl-w h/j/k/l 3. 学习窗口调整 Ctrl-w +/- 4. 掌握窗口关闭 :q 和 Ctrl-w o 5. 学习高级技巧:差异模式、标签页结合

2.常用工作流

# 开发工作流 vim -O main.py utils.py # 垂直分屏打开 :Ctrl-w j # 切换到下方窗口 :sp tests.py # 再水平分屏 :Ctrl-w = # 等分窗口 # 调试工作流 vim -o log1.txt log2.txt # 水平分屏日志 :windo :set wrap # 所有窗口自动换行 :windo /ERROR # 所有窗口搜索ERROR

3.记忆技巧

  • 方向键:h(左), j(下), k(上), l(右) ← 对应Vim移动
  • 大小调整:+(增大), -(减小), >/<(宽度), = (平衡)
  • 记忆口诀Ctrl-w是 "window" 的缩写

⚠️ 常见问题

1.窗口卡住

" 如果窗口无法切换 :set mouse=a " 启用鼠标(临时解决方案) Ctrl-w q " 强制关闭问题窗口 :only! " 强制只保留当前窗口

2.布局混乱

" 恢复布局 Ctrl-w = " 等分所有窗口 :windo wincmd = " 另一种恢复方式 " 重新打开文件 :bufdo :bd " 关闭所有缓冲区 :e! " 重新加载当前文件

3.性能问题

" 分屏太多导致卡顿 :set lazyredraw " 延迟重绘 :set synmaxcol=200 " 限制语法高亮列数 " 关闭不需要的窗口 :windo if &buftype != '' | q | endif " 关闭非文件窗口

这个大全涵盖了Vim分屏的绝大多数操作,从基础到高级都有详细示例。掌握这些技巧能极大提升编辑效率!

http://www.jsqmd.com/news/88357/

相关文章:

  • 63、技术综合指南:系统配置、数据库管理与网络应用
  • JAVA中如何利用JSP实现视频文件的分片上传?
  • MATLAB/Simulink仿真下的蓄电池储能及双向斩波充放电控制策略
  • 列出自己网站音频书籍资源方法附php代码
  • 48、PHP与C/C++编程实用指南
  • 隐式转换,强制转换,字符串,字符的加操作
  • .NET进阶——深入理解Lambda表达式(2)手搓LINQ语句
  • Android中Compose系列之按钮Button
  • SPSS——判别分析——“一般判别分析”
  • 49、Ubuntu 编程工具与 Mono 开发全解析
  • wangEditor支持pdf书签目录结构导入功能
  • Agent 结构(LLM + Tool + Executor)
  • 50、Mono应用开发与Linux机器安全防护
  • 嗨! Coze 的 AI 漫游:解锁智能体与工作流,轻松拿捏智能应用(1) - 实践
  • 红米10x将一键清理和锁屏加到桌面步骤
  • SPSS——非参数检验-“卡方检验”
  • 51、Linux 系统安全防护全攻略
  • 告别 AI 信息焦虑!这 5 个公众号,帮你轻松跟上智能时代节奏 - 品牌鉴赏师
  • PythonREPL、Search API
  • 图的基础概念操作与遍历
  • 52、系统性能调优指南
  • Unity学习笔记(十七)GUI控件(一)
  • 台达DVPEH3系列PLC与欧姆龙E5CC温控器通讯及控制实现
  • 192KHz 双声道输入 24 位 AD 转换器国产品牌DP8340兼容CS5340
  • Origin科研绘图——手把手教你“分段拟合”
  • XPM与IP模式下FIFO的比较
  • 53、Linux 系统优化与命令行操作指南
  • Cameralink采集卡软件EspeedGrab使用讲解:3 保存采集参数
  • C#+VisionMaster 学习笔记(目录)-目录
  • 54、Linux命令行与软件管理全攻略