260 lines
7.6 KiB
Nix
260 lines
7.6 KiB
Nix
![]() |
{ ... }:
|
||
|
{
|
||
|
programs.nixvim = {
|
||
|
keymaps = [
|
||
|
# -----------------------------------------------------
|
||
|
# nvim-tree
|
||
|
# -----------------------------------------------------
|
||
|
|
||
|
## Go to current buffer's file in nvim-tree
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = ",n";
|
||
|
action = ":NvimTreeFindFile<CR>";
|
||
|
}
|
||
|
## Toggle nvim-tree visibility
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = ",m";
|
||
|
action = ":NvimTreeToggle<CR>";
|
||
|
}
|
||
|
|
||
|
# -----------------------------------------------------
|
||
|
# buffer manipulation
|
||
|
# -----------------------------------------------------
|
||
|
|
||
|
## Next Buffer
|
||
|
{
|
||
|
key = "<Tab>";
|
||
|
action = ":bn<CR>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
## Previous Buffer
|
||
|
{
|
||
|
key = "<S-Tab>";
|
||
|
action = ":bp<CR>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
## Close Buffer
|
||
|
{
|
||
|
key = "<leader><Tab>";
|
||
|
action = ":bd<CR>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
## Force Close Buffer
|
||
|
{
|
||
|
key = "<leader><S-Tab>";
|
||
|
action = ":bd!<CR>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
## New Tab
|
||
|
{
|
||
|
key = "<leader>t";
|
||
|
action = ":tabnew split<CR>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
|
||
|
# -----------------------------------------------------
|
||
|
# Telescope
|
||
|
# -----------------------------------------------------
|
||
|
|
||
|
## Lists files in your current working directory, respects .gitignore
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>ff";
|
||
|
action = "<cmd>Telescope find_files<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
## Finds files by filename
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<c-p>";
|
||
|
action = "<cmd>Telescope find_files<cr>";
|
||
|
# action = "<cmd>FzfLua files<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Search for a string in your current working directory and get results live as you type, respects .gitignore. (Requires ripgrep)
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>fg";
|
||
|
action = "<cmd>Telescope live_grep<cr>";
|
||
|
# action = "<cmd>FzfLua live_grep<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Search file contents
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<c-s>";
|
||
|
action = "<cmd>Telescope live_grep<cr>";
|
||
|
# action = "<cmd>FzfLua live_grep<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Lists open buffers in current neovim instance
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>db";
|
||
|
action = "<cmd>Telescope buffers<cr>";
|
||
|
# action = "<cmd>FzfLua buffers<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Lists available help tags and opens a new window with the relevant help info on <cr>
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>fh";
|
||
|
action = "<cmd>Telescope help_tags<cr>";
|
||
|
# action = "<cmd>FzfLua helptags<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Lists manpage entries, opens them in a help window on <cr>
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>fm";
|
||
|
action = "<cmd>Telescope man_pages<cr>";
|
||
|
# action = "<cmd>FzfLua manpages<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Lists previously open files
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>fp";
|
||
|
action = "<cmd>Telescope oldfiles<cr>";
|
||
|
# action = "<cmd>FzfLua oldfiles<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Lists previously open files, Maps to ctrl-/
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<c-_>";
|
||
|
action = "<cmd>Telescope oldfiles<cr>";
|
||
|
# action = "<cmd>FzfLua oldfiles<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Lists spelling suggestions for the current word under the cursor, replaces word with selected suggestion on <cr>
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>fs";
|
||
|
action = "<cmd>Telescope spell_suggest<cr>";
|
||
|
# action = "<cmd>FzfLua spell_suggest<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Lists LSP references for iword under the cursor
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>fr";
|
||
|
action = "<cmd>Telescope lsp_references<cr>";
|
||
|
# action = "<cmd>FzfLua lsp_references<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Lists LSP incoming calls for word under the cursor
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>fi";
|
||
|
action = "<cmd>Telescope lsp_incoming_calls<cr>";
|
||
|
# action = "<cmd>FzfLua lsp_incoming_calls<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Lists LSP outgoing calls for word under the cursor
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>fo";
|
||
|
action = "<cmd>Telescope lsp_outgoing_calls<cr>";
|
||
|
# action = "<cmd>FzfLua lsp_outgoing_calls<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Dynamically Lists LSP for all workspace symbols
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>fw";
|
||
|
action = "<cmd>Telescope lsp_dynamic_workspace_symbols<cr>";
|
||
|
# action = "<cmd>FzfLua lsp_workspace_symbols<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Goto the definition of the word under the cursor, if there's only one, otherwise show all options in Telescope
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<leader>fd";
|
||
|
action = "<cmd>Telescope lsp_definitions<cr>";
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
# Got to previous error
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "[d";
|
||
|
action = "<cmd>lua vim.diagnostic.goto_prev()<CR>";
|
||
|
options = { noremap = true; silent = true; };
|
||
|
}
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = ",k";
|
||
|
action = "<cmd>lua vim.diagnostic.goto_prev()<CR>";
|
||
|
options = { noremap = true; silent = true; };
|
||
|
}
|
||
|
# Got to next error
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "]d";
|
||
|
action = "<cmd>lua vim.diagnostic.goto_next()<CR>";
|
||
|
options = { noremap = true; silent = true; };
|
||
|
}
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = ",j";
|
||
|
action = "<cmd>lua vim.diagnostic.goto_next()<CR>";
|
||
|
options = { noremap = true; silent = true; };
|
||
|
}
|
||
|
|
||
|
## Other Telescope options:
|
||
|
## git_files search only files in git, respects .gitignore
|
||
|
## oldfiles previously opened files
|
||
|
## command_history
|
||
|
## search_history
|
||
|
## man_pages
|
||
|
## resume lists the results including multi-selections of the previous
|
||
|
## picker
|
||
|
|
||
|
# -----------------------------------------------------
|
||
|
# Diff
|
||
|
# -----------------------------------------------------
|
||
|
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = ",d";
|
||
|
## @TODO: This doesn't work
|
||
|
action = ''
|
||
|
function()
|
||
|
if next(require('diffview.lib').views) == nil then
|
||
|
vim.cmd('DiffviewOpen origin')
|
||
|
else
|
||
|
vim.cmd('DiffviewClose')
|
||
|
end
|
||
|
end
|
||
|
'';
|
||
|
options = { noremap = true; };
|
||
|
}
|
||
|
|
||
|
# -----------------------------------------------------
|
||
|
# Bufferline
|
||
|
# -----------------------------------------------------
|
||
|
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<A-h>";
|
||
|
action = ":BufferLineCyclePrev<CR>";
|
||
|
options = { noremap = true; silent = true; };
|
||
|
}
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<A-l>";
|
||
|
action = ":BufferLineCycleNex<CR>";
|
||
|
options = { noremap = true; silent = true; };
|
||
|
}
|
||
|
{
|
||
|
mode = [ "n" ];
|
||
|
key = "<A-c>";
|
||
|
action = ":bdelete!<CR>";
|
||
|
options = { noremap = true; silent = true; };
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
}
|