MatrixDev
Published on

Neovim – Podstawy pracy z potężnym edytorem dla programistów

Authors

Poprzedni artykuł o Neovim

Neovim – Podstawy pracy z potężnym edytorem dla programistów

Neovim to jeden z najpotężniejszych edytorów kodu, który dzięki swojej elastyczności i pluginom, takim jak Lazy czy Telescope, może znacząco usprawnić Twoją pracę. W tym wpisie omówię podstawowe operacje w Neovimie, tryby pracy, skróty klawiszowe oraz konfigurację z użyciem kickstart.nvim i Telescope.

1. Otwieranie plików

Otwieranie plików w Neovimie jest proste i intuicyjne. Oto podstawowe polecenia:

nvim filename.txt           # Otwiera konkretny plik
nvim .                      # Otwiera eksplorator w bieżącym katalogu
nvim file1.txt file2.txt    # Otwiera wiele plików naraz

W istniejącej sesji możesz otwierać pliki bez wychodzenia:

:e filename.txt            # Otwiera plik w bieżącej sesji
:edit filename.txt         # To samo co :e
:Explore                   # Otwiera wbudowany eksplorator plików

Wskazówka: Polecam plugin Oil.nvim zamiast :Explore – jest szybszy i bardziej intuicyjny. Możesz go dodać przez menedżer pluginów Lazy.

2. Nawigacja w pliku

Gdy masz otwarty plik, kluczowe jest opanowanie nawigacji w trybie normalnym. Neovim używa specyficznych skrótów, które z początku mogą wydawać się nietypowe, ale z czasem stają się naturalne.

  • Podstawowa nawigacja:
    • h, j, k, l – poruszanie się w lewo, w dół, w górę, w prawo (zamiast strzałek).
    • w – skok do początku kolejnego słowa.
    • b – skok do początku poprzedniego słowa.
    • Ctrl+d, Ctrl+u – przewijanie o pół strony w dół lub w górę.
    • Shift+{, Shift+} – skok do początku lub końca akapitu.

Wskazówka: Jeśli nawigacja hjkl wydaje się trudna, spróbuj wyłączyć strzałki w konfiguracji, by zmusić się do ich używania – to przyspieszy naukę!

3. Zamykanie Neovima

Gdy masz dość pracy, możesz zamknąć Neovima w prosty sposób:

  • :q – zamyka bieżący bufor (jeśli nie ma niezapisanych zmian).
  • Shift+ZZ – szybkie zapisanie i zamknięcie.
  • Shift+ZQ – szybkie zamknięcie bez zapisywania.

Uwaga: Unikaj przypadkowego generowania losowych haseł, próbując zamknąć Neovima bez znajomości skrótów – :q to Twój przyjaciel!

4. Tryby pracy w Neovimie

Neovim opiera się na kilku trybach pracy, które są kluczowe dla jego filozofii:

  • Tryb normalny: Służy do nawigacji i wykonywania akcji na tekście. Domyślny tryb po otwarciu pliku. Używasz hjkl do poruszania się, a komend jak :w do zapisu.
  • Tryb insert: Włączasz go, by wpisywać tekst, podobnie jak w standardowych edytorach. Przechodzisz do niego przez:
    • i – wstawianie przed kursorem.
    • I – wstawianie na początku linii.
    • a – wstawianie za kursorem.
    • A – wstawianie na końcu linii.
  • Tryb wizualny: Służy do zaznaczania tekstu. Włączasz go przez:
    • v – tryb wizualny (zaznaczanie jak myszką, ale klawiaturą).
    • Ctrl+v – tryb wizualny blokowy (dla całych linii lub kolumn).
    • Alt+v – tryb blokowy (zależny od konfiguracji).
  • Tryb komend: W trybie normalnym wpisujesz : i wykonujesz polecenia, np. :w (zapis), :q (zamknij).

Wskazówka: Klawisz Esc wraca do trybu normalnego lub kończy akcję. Jeśli się zgubisz, wciśnij Esc i spróbuj ponownie.

5. Pierwsze komendy, które musisz znać

Zacznij od tych poleceń, by lepiej zrozumieć Neovima:

  • :Tutor – Interaktywny poradnik o podstawach nawigacji i trybach.
  • :help – Otwiera dokumentację Neovima, idealną do nauki zaawansowanych funkcji.

6. Konfiguracja z kickstart.nvim

Jeśli jeszcze nie skonfigurowałeś Neovima, polecam kickstart.nvim – minimalistyczną konfigurację, która zawiera wszystko, czego potrzebujesz na start. Pobierz plik init.lua z repozytorium:

https://github.com/nvim-lua/kickstart.nvim

Ścieżki do konfiguracji:

  • Windows: ~/AppData/Local/nvim/init.lua
  • Linux/macOS: ~/.config/nvim/init.lua

Skopiuj zawartość init.lua z kickstart.nvim do swojego pliku konfiguracyjnego. Autor konfiguracji omawia jej szczegóły w filmie:

https://www.youtube.com/watch?v=m8C0Cq9Uv9o

Po uruchomieniu Neovima z kickstart.nvim powinieneś zobaczyć menedżer pluginów Lazy. Jeśli nie, wpisz :Lazy. Aby zsynchronizować pluginy, użyj:

  • Shift+S lub :Lazy sync

7. Telescope – Potężne narzędzie do zarządzania projektem

Telescope to jeden z najpotężniejszych pluginów w ekosystemie Neovima, umożliwiający szybkie wyszukiwanie plików, projektów, buforów czy pomocy. Jest domyślnie zawarty w kickstart.nvim. Poniżej znajdziesz przykładową konfigurację Telescope z mojego setupu, z dodanymi skrótami i ustawieniami:

return {
  'nvim-telescope/telescope.nvim',
  tag = '0.1.8',
  dependencies = {
    { 'nvim-lua/plenary.nvim' },
    { 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' },
    { 'nvim-telescope/telescope-ui-select.nvim' },
  },
  config = function()
    require('telescope').setup({
      defaults = {
        file_ignore_patterns = {
          "node_modules",
          ".git",
          "^.git/",
          "^node_modules/",
          "^.venv/",
          "^build/",
          "^dist/",
          "%.pyc$",
          "%.o$",
          "%.a$",
          "%.swp$",
          "%.bak$",
          "%.blend%.%d+$",
          "**/.rclone/*",
        },
      },
      extensions = {
        ["ui-select"] = {
          require("telescope.themes").get_dropdown(),
        },
      },
    })
    require('telescope').load_extension('ui-select')
  end,
  keys = {
    { "<leader>sh", "<cmd>Telescope help_tags<CR>", desc = "[S]earch [H]elp" },
    { "<leader>sk", "<cmd>Telescope keymaps<CR>", desc = "[S]earch [K]eymaps" },
    { "<leader>sf", "<cmd>Telescope find_files<CR>", desc = "[S]earch [F]iles" },
    { "<leader>ss", "<cmd>Telescope builtin<CR>", desc = "[S]earch [S]elect Telescope" },
    { "<leader>sw", "<cmd>Telescope grep_string<CR>", desc = "[S]earch current [W]ord" },
    { "<leader>sg", "<cmd>Telescope live_grep<CR>", desc = "[S]earch by [G]rep" },
    { "<leader>sd", "<cmd>Telescope diagnostics<CR>", desc = "[S]earch [D]iagnostics" },
    { "<leader>sr", "<cmd>Telescope resume<CR>", desc = "[S]earch [R]esume" },
    { "<leader>so", "<cmd>Telescope oldfiles<CR>", desc = "[S]earch Recent Files" },
    { "<leader><leader>", "<cmd>Telescope buffers<CR>", desc = "[ ] Find existing buffers" },
    { "<leader>ff", "<cmd>Telescope find_files<CR>", desc = "Tele✨: Find files" },
    { "<leader>fg", "<cmd>Telescope live_grep<CR>", desc = "Tele✨: Live grep" },
    { "<leader>fh", "<cmd>Telescope help_tags<CR>", desc = "Tele✨: Help tags" },
    { "<leader>fb", "<cmd>Telescope buffers<CR>", desc = "Tele✨: Buffers" },
    {
      "<leader>fn",
      function()
        require('telescope.builtin').find_files({
          search_dirs = {
            "C:/Users/LOWq_53/AppData/Local/nvim/",
            "C:/Users/LOWq_53/AppData/Local/nvim-lowq53/",
          },
          hidden = True,
        })
      end,
      desc = 'Tele:✨ Nvim.lua'
    },
  }
}

Kluczowe skróty Telescope

  • <leader>fn – Szybkie wyszukiwanie plików w katalogu konfiguracji Neovima, np. init.lua. Ustawienie hidden = true pozwala zobaczyć ukryte pliki, np. .gitignore.
  • <leader>ff – Wyszukiwanie wszystkich plików w projekcie.
  • <leader>fg – Wyszukiwanie tekstu w plikach (live grep).
  • <leader>fb – Przełączanie między otwartymi buforami.

Wskazówka: Dodaj własne search_dirs w konfiguracji Telescope, by szybko otwierać pliki z innych projektów, np. folderów kodu.

8. Personalizacja i potencjał Neovima

Neovim to nie tylko edytor, ale prawdziwa bestia, którą możesz przekształcić w potężne narzędzie dzięki odpowiednim ustawieniom i pluginom. Oto kilka kluczowych aspektów, które warto poznać:

  • Podstawowe ustawienia: W pliku init.lua możesz skonfigurować podstawowe opcje, np. vim.opt.number = true (numery linii), vim.opt.tabstop = 2 (rozmiar tabulacji) czy vim.g.mapleader = ',' (zmiana klawisza lider na przecinek). To punkt startowy do personalizacji workflow.
  • Autosave: Aby włączyć automatyczne zapisywanie, dodaj do init.lua: vim.api.nvim_create_autocmd("TextChanged", { command = "write" }). Dzięki temu każdy zapis w trybie insert automatycznie zapisze plik, co chroni przed utratą danych.
  • Pluginy z kickstart.nvim: Kickstart.nvim zawiera podstawowe pluginy, takie jak treesitter (dla podświetlania składni), lsp-zero (dla wsparcia języków programowania) czy Comment.nvim (do szybkiego komentowania kodu). Możesz je rozszerzyć, dodając np. harpoon do zarządzania zakładkami projektowymi.
  • Debugowanie: Debugowanie w Neovimie to zaawansowany temat, ale warto zacząć od pluginu nvim-dap (dostępnego w kickstart.nvim). Umożliwia on integrację z debuggerami dla języków takich jak Python czy C++. Aby zacząć, skonfiguruj adapter debugera w init.lua i przetestuj z prostym projektem. To na mojej liście do zgłębienia, ale społeczność oferuje świetne poradniki, np. na GitHubie.
  • Potencjał Neovima: Dzięki pluginom społeczności i profesjonalnym narzędziom, Neovim z minimalistycznego edytora staje się potężnym IDE. Możesz dodać przezroczyste tło (vim.opt.winblend = 20) i ustawić tapetę w terminalu dla efektu wizualnego. Z odpowiednią konfiguracją Neovim staje się prawdziwym monstrum produktywności – lekkim, szybkim i w pełni dostosowanym do Twoich potrzeb.

9. Dlaczego warto używać Neovima?

Neovim to nie tylko edytor – to środowisko, które możesz dostosować do swoich potrzeb. Dzięki pluginom jak Telescope i konfiguracjom jak kickstart.nvim, możesz stworzyć workflow, który przyspieszy Twoją pracę nad kodem, dokumentami czy skryptami. Zacznij od :Tutor, eksperymentuj z pluginami i nie bój się dostosowywać init.lua – to serce Twojego Neovima!