neovim图形界面切换全屏
2019年10月21日

概述

最近在用neovim的时候,遇到一个小问题以前写的切换窗口/全屏的热键无效了.跟踪了下脚本,问题出现在v:windowid返回0.
后来google一下,发现遇到同样问题的人不在少数,主要症结还是由于neovim是允许多客户端存在,而并非每个UI都需要实现一遍neovim.所以就存在windowid绑定的问题,细节问题真是繁琐又繁琐.

解决

既然是由于windowid无法获取,那就找个工具获取当前neovim gui的windowid就可以了,这里找到一个工具叫xdotool可以做到。

xdotool getactivewindow
# 23455342

直接输出windowid,简单粗暴

vim ~/.vimrc
function! ToggleMaxWindow()
    call system("wid=`xdotool getactivewindow` && wmctrl -ir $wid -b toggle,maximized_vert,maximized_horz")
endfunction
map <silent> <leader>mw :call ToggleMaxWindow()<cr>

后续还会遇到一个问题,窗口模式启动nvim-qt以后,如果在最大化情况下退出,程序会保存窗口大小.
主要原因还是nvim-qt自动保存的窗口配置,而且在每次启动时会读取这些配置.
要解决这个问题,需要2步:

  1. 启动时设置窗口尺寸:
vim ~/bin/qvim
#!/bin/bash
/path/of/nvim-qt --no-ext-tabline --geometry 800x600

--no-ext-tabline忽略标签栏
geometry为qt程序的配置属性,可以指定窗口大小

  1. 清空旧配置并去掉配置文件的写入权限:
cat /dev/null > ~/.config/nvim-qt/window-geometry.conf
chmod -w ~/.config/nvim-qt/window-geometry.conf

完成!