Newest version of dotfiles with Ghostty, Fish, kickstart vim and zsh updates
This commit is contained in:
449
.config/nvim/lua/custom/plugins.lua
Normal file
449
.config/nvim/lua/custom/plugins.lua
Normal file
@@ -0,0 +1,449 @@
|
||||
return {
|
||||
-- Fuzzy Finder
|
||||
{
|
||||
'nvim-telescope/telescope.nvim',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'nvim-telescope/telescope-fzf-native.nvim',
|
||||
},
|
||||
},
|
||||
|
||||
-- LSP & Completion
|
||||
{
|
||||
'neovim/nvim-lspconfig',
|
||||
dependencies = {
|
||||
'williamboman/mason.nvim',
|
||||
'williamboman/mason-lspconfig.nvim',
|
||||
'hrsh7th/nvim-cmp',
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
'hrsh7th/cmp-buffer',
|
||||
'hrsh7th/cmp-path',
|
||||
'L3MON4D3/LuaSnip',
|
||||
'saadparwaiz1/cmp_luasnip',
|
||||
'j-hui/fidget.nvim',
|
||||
},
|
||||
config = function()
|
||||
-- Nichts hier definieren - wir laden die Konfiguration aus der lsp.lua
|
||||
require("custom.lsp")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Snipped
|
||||
{
|
||||
"rafamadriz/friendly-snippets",
|
||||
dependencies = {
|
||||
"L3MON4D3/LuaSnip",
|
||||
},
|
||||
config = function()
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
end,
|
||||
},
|
||||
|
||||
-- Syntax Highlighting
|
||||
{
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
build = ':TSUpdate',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||
},
|
||||
},
|
||||
|
||||
-- Datei-Explorer
|
||||
{
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"nvim-tree/nvim-web-devicons", -- Für Datei-Icons
|
||||
"MunifTanjim/nui.nvim", -- UI-Komponenten-Bibliothek
|
||||
},
|
||||
config = function()
|
||||
-- Standardkonfiguration deaktivieren
|
||||
vim.g.neo_tree_remove_legacy_commands = 1
|
||||
|
||||
require("neo-tree").setup({
|
||||
close_if_last_window = false, -- Neovim schließen, wenn nur noch Neo-tree offen ist?
|
||||
popup_border_style = "rounded", -- Stil für Popup-Fenster
|
||||
enable_git_status = true, -- Git-Integration aktivieren
|
||||
enable_diagnostics = true, -- Zeige Diagnostik-Informationen (LSP)
|
||||
|
||||
default_component_configs = {
|
||||
container = {
|
||||
enable_character_fade = true, -- Schöne Übergänge bei Textlängen
|
||||
width = "100%",
|
||||
right_padding = 0,
|
||||
},
|
||||
indent = {
|
||||
indent_size = 2,
|
||||
padding = 1,
|
||||
with_markers = true,
|
||||
indent_marker = "│",
|
||||
last_indent_marker = "└",
|
||||
highlight = "NeoTreeIndentMarker",
|
||||
with_expanders = true, -- Klick-/Tastatur-expandierbare Ordner
|
||||
expander_collapsed = "",
|
||||
expander_expanded = "",
|
||||
expander_highlight = "NeoTreeExpander",
|
||||
},
|
||||
icon = {
|
||||
folder_closed = "",
|
||||
folder_open = "",
|
||||
folder_empty = "",
|
||||
default = "*",
|
||||
highlight = "NeoTreeFileIcon"
|
||||
},
|
||||
modified = {
|
||||
symbol = "[+]",
|
||||
highlight = "NeoTreeModified",
|
||||
},
|
||||
name = {
|
||||
trailing_slash = false,
|
||||
use_git_status_colors = true,
|
||||
highlight = "NeoTreeFileName",
|
||||
},
|
||||
git_status = {
|
||||
symbols = {
|
||||
-- Symbole für Git-Status
|
||||
added = "✚", -- oder "✚"
|
||||
modified = "", -- oder "✹"
|
||||
deleted = "✖", -- oder ""
|
||||
renamed = "➜", -- oder ""
|
||||
untracked = "★", -- oder "✭"
|
||||
ignored = "◌", -- oder "◌"
|
||||
unstaged = "✗", -- oder "✗"
|
||||
staged = "✓", -- oder "✓"
|
||||
conflict = "", -- oder "≠"
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
-- Welche Ansichten verfügbar sein sollen
|
||||
source_selector = {
|
||||
winbar = true, -- Zeige Auswahl in der Fensterleiste
|
||||
statusline = false, -- Nicht in der Statuszeile anzeigen
|
||||
content_layout = "center",
|
||||
sources = { -- Verfügbare Quellen
|
||||
{ source = "filesystem", display_name = " Dateien " },
|
||||
{ source = "buffers", display_name = " Buffer " },
|
||||
{ source = "git_status", display_name = " Git " },
|
||||
},
|
||||
tabs_layout = "equal", -- "equal", "focus"
|
||||
},
|
||||
|
||||
-- Dateisystemansicht
|
||||
filesystem = {
|
||||
filtered_items = {
|
||||
visible = true, -- Gefilterte Elemente mit anderen Stil anzeigen
|
||||
hide_dotfiles = false, -- Versteckte Dateien anzeigen
|
||||
hide_gitignored = false, -- Git-ignorierte Dateien anzeigen
|
||||
hide_hidden = false, -- Versteckte Dateien unter Windows anzeigen
|
||||
hide_by_name = {
|
||||
-- "node_modules", -- Auskommentieren, um zu verstecken
|
||||
},
|
||||
hide_by_pattern = {
|
||||
-- "*.meta", -- Auskommentieren, um zu verstecken
|
||||
},
|
||||
always_show = { -- Immer anzeigen, auch wenn sie sonst gefiltert würden
|
||||
".gitignored",
|
||||
".env",
|
||||
},
|
||||
never_show = { -- Dateien, die immer ausgeblendet werden
|
||||
".DS_Store",
|
||||
},
|
||||
never_show_by_pattern = { -- Regex-Muster für Dateien, die nie angezeigt werden
|
||||
-- ".*\\.meta$",
|
||||
},
|
||||
},
|
||||
follow_current_file = {
|
||||
enabled = true, -- Hervorheben der aktuellen Datei im Explorer
|
||||
leave_dirs_open = false, -- Ordner öffnen, wenn Datei darin
|
||||
},
|
||||
group_empty_dirs = false, -- Leere Unterordner unter Elternordner gruppieren
|
||||
hijack_netrw_behavior = "open_default", -- Netrw ersetzen
|
||||
use_libuv_file_watcher = true, -- Effiziente Dateiüberwachung (bemerkt Änderungen)
|
||||
|
||||
window = {
|
||||
mappings = {
|
||||
-- Tastenkombinationen im Dateisystem-Fenster
|
||||
["<space>"] = "none", -- Space für andere Funktionen freigeben
|
||||
["<2-LeftMouse>"] = "open",
|
||||
["<cr>"] = "open",
|
||||
["S"] = "open_split", -- In horizontales Split öffnen
|
||||
["s"] = "open_vsplit", -- In vertikales Split öffnen
|
||||
["t"] = "open_tabnew", -- In neuem Tab öffnen
|
||||
["C"] = "close_node", -- Knoten schließen
|
||||
["z"] = "close_all_nodes", -- Alle Knoten schließen
|
||||
["R"] = "refresh", -- Aktualisieren
|
||||
["a"] = {
|
||||
"add", -- Neue Datei/Ordner erstellen
|
||||
config = {
|
||||
show_path =
|
||||
"relative" -- Relativen Pfad beim Erstellen anzeigen
|
||||
}
|
||||
},
|
||||
["d"] = "delete", -- Löschen
|
||||
["r"] = "rename", -- Umbenennen
|
||||
["y"] = "copy_to_clipboard", -- In Zwischenablage kopieren
|
||||
["x"] = "cut_to_clipboard", -- Ausschneiden
|
||||
["p"] = "paste_from_clipboard", -- Einfügen
|
||||
["c"] = "copy", -- Kopieren (mit Ziel-Auswahl)
|
||||
["m"] = "move", -- Verschieben (mit Ziel-Auswahl)
|
||||
["/"] = "filter_on_submit", -- Filtern
|
||||
["<esc>"] = "clear_filter", -- Filter löschen
|
||||
["f"] = "filter_on_submit", -- Filtern (Alternative)
|
||||
["<c-x>"] = "clear_filter", -- Filter löschen (Alternative)
|
||||
["?"] = "show_help", -- Hilfe anzeigen
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
-- Buffer-Ansicht (Geöffnete Dateien)
|
||||
buffers = {
|
||||
follow_current_file = {
|
||||
enabled = true, -- Aktuelle Datei hervorheben
|
||||
},
|
||||
group_empty_dirs = true, -- Leere Ordner gruppieren
|
||||
show_unloaded = true, -- Auch nicht geladene Buffer anzeigen
|
||||
},
|
||||
|
||||
-- Git-Status-Ansicht
|
||||
git_status = {
|
||||
window = {
|
||||
mappings = {
|
||||
["A"] = "git_add_all", -- Alle Änderungen stagen
|
||||
["u"] = "git_unstage_file", -- Datei unstagen
|
||||
["a"] = "git_add_file", -- Datei stagen
|
||||
["r"] = "git_revert_file", -- Änderungen zurücksetzen
|
||||
["c"] = "git_commit", -- Commit erstellen
|
||||
["p"] = "git_push", -- Push
|
||||
["gg"] = "git_commit_and_push", -- Commit und Push
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
-- Hauptfenster-Konfiguration
|
||||
window = {
|
||||
position = "right", -- Explorer auf der rechten Seite
|
||||
width = 35, -- Breite des Explorers
|
||||
mapping_options = {
|
||||
noremap = true,
|
||||
nowait = true,
|
||||
},
|
||||
mappings = {
|
||||
["<space>"] = "none", -- Space für andere Funktionen freigeben
|
||||
["<2-LeftMouse>"] = "open",
|
||||
["<cr>"] = "open",
|
||||
["S"] = "open_split",
|
||||
["s"] = "open_vsplit",
|
||||
["t"] = "open_tabnew",
|
||||
["w"] = "open_with_window_picker", -- Mit Fensterauswahl öffnen
|
||||
["C"] = "close_node",
|
||||
["z"] = "close_all_nodes",
|
||||
["R"] = "refresh",
|
||||
["a"] = {
|
||||
"add",
|
||||
config = {
|
||||
show_path = "relative"
|
||||
}
|
||||
},
|
||||
["d"] = "delete",
|
||||
["r"] = "rename",
|
||||
["y"] = "copy_to_clipboard",
|
||||
["x"] = "cut_to_clipboard",
|
||||
["p"] = "paste_from_clipboard",
|
||||
["c"] = "copy",
|
||||
["m"] = "move",
|
||||
["q"] = "close_window", -- Fenster schließen
|
||||
["?"] = "show_help",
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
-- Tastenkombination zum Öffnen des Explorers
|
||||
vim.keymap.set("n", "<leader>e", ":Neotree toggle right<CR>",
|
||||
{ silent = true, desc = "Explorer ein/aus" })
|
||||
-- Tastenkombination für Dateiansicht
|
||||
vim.keymap.set("n", "<leader>ef", ":Neotree focus filesystem right<CR>",
|
||||
{ silent = true, desc = "Datei-Explorer" })
|
||||
-- Tastenkombination für Buffer-Liste
|
||||
vim.keymap.set("n", "<leader>eb", ":Neotree focus buffers right<CR>",
|
||||
{ silent = true, desc = "Buffer-Liste" })
|
||||
-- Tastenkombination für Git-Status
|
||||
vim.keymap.set("n", "<leader>eg", ":Neotree focus git_status right<CR>",
|
||||
{ silent = true, desc = "Git-Status" })
|
||||
end,
|
||||
},
|
||||
|
||||
-- Schnellwechsel zwischen Dateien (wie Harpoon)
|
||||
{
|
||||
'ThePrimeagen/harpoon',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
},
|
||||
config = function()
|
||||
-- Basiseinstellungen für Harpoon
|
||||
require("harpoon").setup()
|
||||
|
||||
-- Einfache, direkte Keybindings
|
||||
vim.keymap.set("n", "<leader>a", require("harpoon.mark").add_file, { desc = "Datei markieren" })
|
||||
vim.keymap.set("n", "<leader>h", require("harpoon.ui").toggle_quick_menu,
|
||||
{ desc = "Harpoon-Menü" })
|
||||
vim.keymap.set("n", "<C-j>", function() require("harpoon.ui").nav_file(1) end)
|
||||
vim.keymap.set("n", "<C-k>", function() require("harpoon.ui").nav_file(2) end)
|
||||
vim.keymap.set("n", "<C-l>", function() require("harpoon.ui").nav_file(3) end)
|
||||
vim.keymap.set("n", "<C-;>", function() require("harpoon.ui").nav_file(4) end)
|
||||
end,
|
||||
},
|
||||
|
||||
-- Git-Integration
|
||||
{
|
||||
'lewis6991/gitsigns.nvim',
|
||||
config = true,
|
||||
},
|
||||
|
||||
-- Formatierung
|
||||
{
|
||||
'stevearc/conform.nvim',
|
||||
},
|
||||
|
||||
-- Framework-Unterstützung
|
||||
|
||||
-- PHP/Symfony
|
||||
{
|
||||
'phpactor/phpactor',
|
||||
ft = 'php',
|
||||
build = 'composer install --no-dev -o',
|
||||
},
|
||||
|
||||
-- TypeScript/JavaScript/React/Vue/NestJS
|
||||
{
|
||||
'pmizio/typescript-tools.nvim',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'neovim/nvim-lspconfig',
|
||||
},
|
||||
config = function()
|
||||
require("typescript-tools").setup({
|
||||
settings = {
|
||||
tsserver_file_preferences = {
|
||||
importModuleSpecifierPreference = "relative",
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Vue.js
|
||||
-- {
|
||||
-- 'neovim/nvim-lspconfig',
|
||||
-- opts = function(_, opts)
|
||||
-- -- Füge Volar als Server hinzu
|
||||
-- opts.servers = opts.servers or {}
|
||||
-- opts.servers.volar = {
|
||||
-- filetypes = { 'vue', 'typescript', 'javascript' }
|
||||
-- }
|
||||
-- end,
|
||||
-- },
|
||||
|
||||
-- Playwright Testing
|
||||
{
|
||||
'mxsdev/nvim-dap',
|
||||
dependencies = {
|
||||
'rcarriga/nvim-dap-ui',
|
||||
'mfussenegger/nvim-dap-python',
|
||||
},
|
||||
},
|
||||
|
||||
-- YAML und JSON Unterstützung
|
||||
'b0o/schemastore.nvim',
|
||||
|
||||
-- Für Zen-Modus
|
||||
{
|
||||
"folke/zen-mode.nvim",
|
||||
cmd = "ZenMode",
|
||||
opts = {
|
||||
window = {
|
||||
width = 90,
|
||||
options = {
|
||||
number = false,
|
||||
relativenumber = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Für Git-Integration
|
||||
{
|
||||
"sindrets/diffview.nvim",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
},
|
||||
|
||||
-- Für Neogit
|
||||
{
|
||||
"NeogitOrg/neogit",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"sindrets/diffview.nvim",
|
||||
},
|
||||
cmd = "Neogit",
|
||||
},
|
||||
|
||||
-- Für Farbvorschau in Code
|
||||
{
|
||||
"norcalli/nvim-colorizer.lua",
|
||||
cmd = "ColorizerToggle",
|
||||
config = true,
|
||||
},
|
||||
|
||||
-- Leap/Lightspeed
|
||||
{
|
||||
"ggandor/leap.nvim",
|
||||
config = function()
|
||||
require('leap').add_default_mappings()
|
||||
end,
|
||||
},
|
||||
|
||||
-- Hydra für kontextbezogene Tastaturmodi
|
||||
{
|
||||
"anuvyklack/hydra.nvim",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
-- Die Konfigurationen folgen im nächsten Schritt
|
||||
require("custom.hydra")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Window-Picker
|
||||
{
|
||||
"s1n7ax/nvim-window-picker",
|
||||
version = "v2.*",
|
||||
config = function()
|
||||
require("window-picker").setup({
|
||||
filter_rules = {
|
||||
-- Filtere diese Fenstertypen aus
|
||||
bo = {
|
||||
filetype = { "neo-tree", "neo-tree-popup", "notify", "quickfix" },
|
||||
buftype = { "terminal" },
|
||||
},
|
||||
},
|
||||
highlights = {
|
||||
statusline = {
|
||||
focused = {
|
||||
fg = "#000000",
|
||||
bg = "#E35E4F",
|
||||
},
|
||||
unfocused = {
|
||||
fg = "#000000",
|
||||
bg = "#44CC41",
|
||||
},
|
||||
},
|
||||
},
|
||||
picker_config = {
|
||||
statusline_winbar_picker = {
|
||||
-- Verwende Buchstaben des Alphabets für die Fensterauswahl
|
||||
selection_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user