技巧39-管理隐藏缓冲区

  • 查看缓冲区列表
:ls
1 #a + "README.md"                    line 2 
4 %a   "inject_test.lua"              line 6 
  • 缓冲区列表前有一个+号,表示这个缓冲区被修改过了。
:ls 
1 %a + "README.md"                    line 2 
  • :bnext!强制切换缓冲区(README.md切换到inject_test.lua)
  • inject_test.lua被标记为a,表示它是活动缓冲区(active)
  • README.md别标记为h,表示它是一个隐藏缓冲区(hidden)
:bnext!
:ls
1 #h + "README.md"                    line 2
4 %a   "inject_test.lua"              line 7 

在退出时处理隐藏缓冲区

  • quit退出时会提示
:quit
E37: No write since last change 
E162: No write since last change for buffer "README.md"       
Press ENTER or type command to continue
  • 按任意键后会加载第一个有改动的隐藏缓冲区。这里会加载README.md
  • :write 可以保存缓冲区,:edit!可丢弃修改,没有隐藏缓冲区时:q关闭Vim。
:write
:edit!
:q
  • 退出Vim不检查未保存的修改
qall!
  • 保存所有改动的缓冲区,无需逐个检查
:wall

运行‘:*do’命令前,启用‘hidden’设置

  • 启用了'hidden'选项就可以不带末尾的感叹号来执行:next、:bnext、:cnext。
:argdo
:bufdo
:cfdo