feat: add smart zellij navigation from vim

This commit is contained in:
2026-06-06 14:12:21 +09:00
parent dec46e9ad9
commit 94b6b2feae
+31 -8
View File
@@ -29,6 +29,29 @@ let
inherit desc; inherit desc;
}; };
}; };
mkSmartWindowNav = key: direction: zellijDirection: desc: {
mode = "n";
inherit key;
action.__raw = ''
function()
local current_win = vim.api.nvim_get_current_win()
vim.cmd.wincmd("${direction}")
local at_edge = vim.api.nvim_get_current_win() == current_win
local in_zellij = vim.env.ZELLIJ ~= nil
local has_zellij_cli = vim.fn.executable("zellij") == 1
if at_edge and in_zellij and has_zellij_cli then
vim.system({ "zellij", "action", "move-focus-or-tab", "${zellijDirection}" })
end
end
'';
options = {
silent = true;
inherit desc;
};
};
in in
{ {
programs.nixvim = { programs.nixvim = {
@@ -98,14 +121,14 @@ in
(mk "[l" "<cmd>lprev<CR>" "前のLocation Listへ") (mk "[l" "<cmd>lprev<CR>" "前のLocation Listへ")
# Window navigation # Window navigation
(mk "<C-h>" "<C-w>h" "左のウィンドウへ") (mkSmartWindowNav "<C-h>" "h" "left" "左のウィンドウへ(端ならZellijペイン/タブへ)")
(mk "<C-j>" "<C-w>j" "下のウィンドウへ") (mkSmartWindowNav "<C-j>" "j" "down" "下のウィンドウへ(端ならZellijペインへ)")
(mk "<C-k>" "<C-w>k" "上のウィンドウへ") (mkSmartWindowNav "<C-k>" "k" "up" "上のウィンドウへ(端ならZellijペインへ)")
(mk "<C-l>" "<C-w>l" "右のウィンドウへ") (mkSmartWindowNav "<C-l>" "l" "right" "右のウィンドウへ(端ならZellijペイン/タブへ)")
(mk "<C-Left>" "<C-w>h" "左のウィンドウへ") (mkSmartWindowNav "<C-Left>" "h" "left" "左のウィンドウへ(端ならZellijペイン/タブへ)")
(mk "<C-Down>" "<C-w>j" "下のウィンドウへ") (mkSmartWindowNav "<C-Down>" "j" "down" "下のウィンドウへ(端ならZellijペインへ)")
(mk "<C-Up>" "<C-w>k" "上のウィンドウへ") (mkSmartWindowNav "<C-Up>" "k" "up" "上のウィンドウへ(端ならZellijペインへ)")
(mk "<C-Right>" "<C-w>l" "右のウィンドウへ") (mkSmartWindowNav "<C-Right>" "l" "right" "右のウィンドウへ(端ならZellijペイン/タブへ)")
# Alternate file / previous file # Alternate file / previous file
(mk "<leader><leader>" "<C-^>" "直前のファイルへ戻る") (mk "<leader><leader>" "<C-^>" "直前のファイルへ戻る")