neovim下window的快捷切换

文章介绍了如何在Neovim中模仿Emacs的window-numbering功能,通过lualine.nvim插件显示窗口编号,并编写lua脚本来设置快捷键leader+w+数字进行窗口切换。用户可以根据编号快速定位和切换窗口,提高编辑效率。
摘要由CSDN通过智能技术生成

neovim下window的快捷切换

在使用emacs的时候,喜欢加插件window-numbering。
这样在分屏之后的emacs里,通过配置快捷键leader+w+number 跳转到对应的windows,
而且该软件会在对应底部显示数字提示,非常方便。
另外:为什么不用快捷键leader+number,哈哈,因为留给了更频繁的bufer切换。

那么在neovim下面有对应的吗?
之前一直用c+w+方向键切换window,但是还是想着统一下快捷键,找了一圈没找到(其实也没认真找),那就自己实现一个呗。

需求

  1. 底部栏显示数字,知道当前window是对应数字几
  2. 可以设置快捷键leader+w+number 跳转到对应的windows

需要插件lualine.nvim

底部窗口数字显示在lualine插件上。

在针对lualine.nvim的自己配置文件上增加代码:

local function yuwindow()
	local windows = vim.api.nvim_list_wins()
	local filename = vim.fn.expand("%:p")

	for i, win_handle in ipairs(windows) do
		local b = vim.api.nvim_win_get_buf(win_handle)
		local name = vim.api.nvim_buf_get_name(b)
    if name == filename then
      return "w["..i.."]"
    end
	end
	return "no"
end

--省略

--当前的窗口下sections不做配置修改,因为没必要自己跳自己。
--在非选中的窗口下设置inactive_sections
	inactive_sections = {
		lualine_a = {},
		lualine_b = {},
		lualine_c = { "filename", yuwindow },
		lualine_x = { "location" },
		lualine_y = {},
		lualine_z = {},
	},
  -- 增加了yuwindow

窗口切换实现

直接上代码,对应快捷键配置在底部:

local M = {}

M.change_window = function(type)
  local windows =  vim.api.nvim_list_wins()
  local win_handle
  if #windows >= type then
    win_handle = windows[type]
  else
    vim.notify("no window")
    return
  end
  vim.api.nvim_set_current_win(win_handle)
  vim.api.nvim_win_set_cursor(win_handle, { 1, 0 })
end
vim.keymap.set("n", "<leader>w1", "<Cmd>lua require 'yuyu.config.yuwindow'.change_window(1)<cr>", { desc = "open window1" })
vim.keymap.set("n", "<leader>w2", "<Cmd>lua require 'yuyu.config.yuwindow'.change_window(2)<cr>", { desc = "open window2" })
vim.keymap.set("n", "<leader>w3", "<Cmd>lua require 'yuyu.config.yuwindow'.change_window(3)<cr>", { desc = "open window3" })
vim.keymap.set("n", "<leader>w4", "<Cmd>lua require 'yuyu.config.yuwindow'.change_window(4)<cr>", { desc = "open window4" })

return M

里面的require 'yuyu.config.yuwindow’按实际路径替换。

在这里插入图片描述

结束

这样就ok了,可以按自己喜欢的高效跳转了。 但是有一个小问题,如果两个window打开的都是同一个文件,会导致无法跳转,因为代码是根据buf的名字对应window的,但是我觉得还ok,先分享了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余很多之很多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值