blob: 4b6344c2cc9b1893c11395ef21bf3319557d764d (
plain) (
tree)
|
|
{
config,
lib,
...
}: let
cfg = config.soispha.programs.nvim;
in {
config.home-manager.users.soispha = lib.mkIf cfg.enable {
programs.nixvim = {
globals = {
mapleader = " ";
maplocalleader = " ";
};
keymaps = [
{
mode = ["n" "i"];
key = "<Esc>";
action = "<cmd>noh<CR><Esc>";
options.desc = "Disable the search highlighting and send Escape";
}
{
key = "hh";
mode = ["i"];
action.__raw = ''
function()
local cmp = require('cmp');
local luasnip = require('luasnip');
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
end
end
'';
options.desc = "completion trigger/ forward in completen menu";
}
{
key = "uu";
mode = ["i"];
action.__raw = ''
function()
local cmp = require('cmp');
cmp.confirm()
end
'';
options.desc = "confirm the selected item";
}
{
key = "<C-Tab>";
action = "<cmd>tabnext<CR>";
options.desc = "cycle to the next tab";
}
{
key = "<S-C-Tab>";
action = "<cmd>tabprevious<CR>";
options.desc = "cycle to the previous tab";
}
# yank/ cut to the system clipboard
{
key = "<leader>y";
action = "\"+y";
options.desc = "yank to the system clipboard";
}
{
key = "<leader>Y";
action = "\"+Y";
options.desc = "yank until the end of the line to the system clipboard";
}
# Unmap some old keys
#{key = "s"; action = "'<Nop>'";}
#{key = "t"; action = "'<Nop>'";}
{
key = "<Up>";
action = "<Nop>";
}
{
key = "<Down>";
action = "<Nop>";
}
{
key = "<Left>";
action = "<Nop>";
}
{
key = "<Right>";
action = "<Nop>";
}
# Center the cursor vertically when moving to the next word during a search.
{
key = "l";
action = "nzzzv";
options.desc = "Center the cursor vertically when moving to the next word during a search.";
}
{
key = "L";
action = "Nzzzv";
options.desc = "Center the cursor vertically when moving to the next word during a search.";
}
# remap the other keys to dvorak
{
key = "k";
action = "t";
options.desc = "go the the right on char";
}
{
key = "K";
action = "T";
options.desc = "go to the left on char";
}
{
key = "j";
action = "k";
options.desc = "go to the right before the char";
}
{
key = "J";
action = "K";
options.desc = "go to the left before the char";
}
# Change Vim-keys
{
key = "h";
action = "<left>";
options.desc = "go left";
}
{
key = "t";
action = "g<down>";
options.desc = "go down, with displaylines";
}
{
key = "n";
action = "g<up>";
options.desc = "go up, with displaylines";
}
{
key = "s";
action = "<right>";
options.desc = "go right";
}
# Move display lines
{
key = "0";
action = "g0";
options.desc = "go to the leftmost character in the screen line";
}
{
key = "$";
action = "g$";
options.desc = "go to the rightmost character in the screen line";
}
{
mode = ["n"];
key = "<Enter>";
action = "gf";
options.desc = "open file/url under cursor";
}
{
mode = ["n"];
key = "<Tab>";
action = ":";
options.desc = "jump to command line";
}
{
mode = ["n"];
key = "\\f";
action.__raw = "function() require('lf').start() end";
options.desc = "open lf in a floating window";
}
# Splits
{
mode = ["n"];
key = "<C-t>";
action = "<C-w>p";
options.desc = "go to previous split";
}
{
mode = ["n"];
key = "<C-n>";
action = "<C-w>w";
options.desc = "go to next split";
}
{
mode = ["n"];
key = "<leader>-";
action = "<C-W>s";
options.desc = "New horizontal split";
}
{
mode = ["n"];
key = "<leader>|";
action = "<C-W>v";
options.desc = "New vertical split";
}
{
mode = ["n"];
key = "<leader>p";
action = "\"_dP";
options.desc = "keep the cut thing in the base register";
}
{
mode = ["n"];
key = "<leader>c";
action = "\"_c";
options.desc = "change without saving to register";
}
{
mode = ["n"];
key = "<leader>d";
action = "\"_d";
options.desc = "delete without saving to register";
}
{
key = "x";
mode = ["n"];
action.__raw = ''
function()
local col = vim.api.nvim_win_get_cursor(0)[2]
local char = vim.api.nvim_get_current_line():sub(col+1,col+1)
if char:match("%s") then
return '"_x'
else
return "x"
end
end
'';
options = {
desc = "Pipe all space only deletions to the blackhole register";
expr = true;
silent = true;
};
}
{
key = "dd";
mode = ["n"];
action.__raw = ''
function()
if vim.api.nvim_get_current_line():match("^%s*$") then
return '"_dd'
else
return "dd"
end
end
'';
options = {
desc = "Pipe all blank line deletions to the blackhole register";
expr = true;
silent = true;
};
}
{
mode = ["n"];
key = "<leader>s";
action = ":%s/\\<<C-r><C-w>\\>/<C-r><C-w>/gI<Left><Left><Left>";
options.desc = "replace for the word under the cursor";
}
{
mode = ["n"];
key = "<C-s>";
action = "<cmd>mksession! <CR>";
options.desc = "overwrite/create a session";
}
{
mode = ["n"];
key = "<leader>X";
action = "!!$SHELL <CR>";
options.desc = "Read the current line and execute that line in your $SHELL. The resulting output will replace the curent line that was being executed.";
}
{
mode = ["t"];
key = "<Esc><Esc>";
action = "<C-\\><C-n>";
options.desc = "Exit terminal mode with <Esc><Esc>";
}
# move selected lines in visual mode
{
mode = ["v"];
key = "T";
action = ":m '>+1<CR>gv=gv";
options.desc = "move selected lines in visual mode down";
}
{
mode = ["v"];
key = "N";
action = ":m '<-2<CR>gv=gv";
options.desc = "move selected lines in visual mode up";
}
];
};
};
}
|