Konfigurasi Neovim minimal yang ditulis dalam lua
Daftar isi
Neovim adalah penerus Vim yang cukup keren, berfokus pada kompatibilitas sambil menambahkan fungsionalitas plugin asinkron dan mencoba membersihkan basis kode. Setelah muak dengan Sublime Text (2 dan 3) dan Atom, dan setelah menyadari betapa banyak pengembangan yang saya lakukan pada SSH, sepertinya masuk akal untuk mencoba menggunakan vim (atau nvim, dalam hal ini) sebagai IDE saya. Keuntungannya pada dasarnya bermuara pada:
Oleh karena itu, saya memutuskan untuk membuat repositori ini. Ada beberapa versi, periksa CHANGELOG.
Konfigurasi ini dimaksudkan sebagai titik awal, dan hanya sesuai dengan kebutuhan saya. Jika Anda ingin menyesuaikannya, lompat ke 6. Kustomisasi.
mv ~ /.config/nvim ~ /.config/nvim.bak
sistem operasi | JALUR |
---|---|
Linux, MacOS | $XDG_CONFIG_HOME/nvim , ~/.config/nvim |
jendela (cmd) | %localappdata%nvim |
Windows (powershell) | $env:LOCALAPPDATAnvim |
CATATAN Url fork Anda akan seperti ini:
https://github.com/<your_github_username>/neovim-config.git
CATATAN Jika mengikuti langkah yang disarankan di atas (yaitu, mem-forking repo), ganti
ntk148v
dengan<your_github_username>
pada perintah di bawah ini
git clone https://github.com/ntk148v/neovim-config.git " ${XDG_CONFIG_HOME :- $HOME / .config} " /nvim
Jika Anda menggunakan cmd.exe
:
git clone https://github.com/ntk148v/neovim-config.git " %localappdata%nvim "
Jika Anda menggunakan powershell.exe
git clone https://github.com/ntk148v/neovim-config.git " ${env : LOCALAPPDATA} nvim "
nvim
git pull
. File-file di bawah config akan secara otomatis dimuat pada waktu yang tepat, jadi Anda tidak perlu memerlukan file-file tersebut secara manual.
tree ~ /.config/nvim
├── init.lua
├── lazy-lock.json
└── lua
├── autocmds.lua
├── custom.lua
├── mappings.lua
├── options.lua
├── plugins
│ ├── configs
│ │ ├── cmp.lua
│ │ ├── gitsigns.lua
│ │ ├── lspconfig.lua
│ │ ├── lualine.lua
│ │ ├── luasnip.lua
│ │ ├── mason.lua
│ │ ├── null-ls.lua
│ │ ├── telescope.lua
│ │ ├── tree.lua
│ │ └── treesitter.lua
│ └── init.lua
└── sample_custom.lua
Pengaya | Keterangan |
---|---|
malas.nvim | Manajer plugin modern untuk Neovim |
mason.nvim | Manajer paket portabel untuk Neovim yang berjalan di mana pun Neovim dijalankan. Instal dan kelola server LSP, server DAP, linter, dan pemformat dengan mudah. |
nvim-lspconfig | Kumpulan konfigurasi umum untuk klien server bahasa bawaan Neovim |
tanda git | Dekorasi git super cepat diimplementasikan murni dalam lua/teal |
nvim-pengasuh pohon | Konfigurasi Nvim Treesitter dan lapisan abstraksi |
nvim-cmp | Plugin penyelesaian otomatis |
LuaSnip | Mesin Cuplikan untuk Neovim ditulis dalam Lua |
nvim-tree.lua - | File Explorer yang ditulis dalam Lua |
nvim-pasangan otomatis | Pasangan otomatis super kuat untuk Neovim |
nvim-web-devicons | fork lua dari vim-web-devicons untuk neovim |
lualine.nvim | Plugin statusline neovim yang sangat cepat dan mudah dikonfigurasi, ditulis dalam lua murni. |
norcalli/nvim-colorizer.lua | Pewarna Neovim tercepat. |
nvim-teleskop/teleskop.nvim | Temukan, Filter, Pratinjau, Pilih. Semua lua, sepanjang waktu. |
mawar-pinus | Getaran Soho untuk Neovim |
nvimtools/none-ls.nvim | null-ls.nvim dimuat ulang / Gunakan Neovim sebagai server bahasa untuk memasukkan diagnostik LSP, tindakan kode, dan lainnya melalui Lua. |
folke/yang-kunci.nvim | Buat ikatan kunci yang menempel. WhereKey membantu Anda mengingat peta kunci Neovim Anda, dengan menampilkan ikatan kunci yang tersedia dalam munculan saat Anda mengetik. |
Secara default, server LSP berikut diinstal dan dikonfigurasi:
Selain itu, ia terintegrasi dengan nvim-treesitter untuk menyediakan penyorotan sintaksis yang kaya dan keajaiban penguraian bahasa lainnya.
Jika bahasa Anda tidak didukung, ikuti ini:
:LspInstall ` <your_language_server> `
:TSInstall ` <language_to_install> `
Anda dapat menambahkan lebih banyak server LSP dan penyorotan sintaksis bahasa dengan mengedit file khusus.
Ini adalah peta kunci default, pada pintasan berikut, kunci <leader>
+` diatur ke karakter `` (spasi), periksa: keymaps.lua.
Jalan pintas | Mode | Keterangan |
---|---|---|
kk | Menyisipkan | Esc dengan kk |
<leader> + r | Normal | Muat ulang file konfigurasi |
<leader> + s | Normal | Simpan berkas |
<leader> + q | Normal | Simpan (tutup semua jendela) dan keluar dari Neovim |
<leader> + n | Normal | Buka NvimTree |
<leader> + nr | Normal | Segarkan NvimTree |
<leader> + nf | Normal | Temukan file di NvimTree |
<leader> + ff | Normal | Buka Teleskop untuk menemukan file |
<leader> + fg | Normal | Buka Teleskop untuk melakukan live grep |
<leader> + fb | Normal | Buka Teleskop untuk membuat daftar buffer |
<leader> + fh | Normal | Buka Teleskop untuk menunjukkan bantuan |
<leader> + fo | Normal | Buka Teleskop untuk menampilkan file yang baru dibuka |
<leader> + cm | Normal | Buka Teleskop untuk membuat daftar komitmen git |
<leader> + wh/j/k/l | Normal | Bergerak di sekitar perpecahan |
mm | Normal | Baris komentar/batalkan komentar |
Ada banyak keymap default, Anda dapat memeriksanya menggunakan perintah :map
. Tersedia juga varian lainnya:
:nmap
untuk pemetaan mode normal:vmap
untuk pemetaan mode visual:imap
untuk pemetaan mode penyisipan Daftar di atas belum lengkap. Mengetik :help map
di Vim akan memberi Anda info lebih lanjut.
Anda dapat menyesuaikan konfigurasi ini dengan membuat modul custom
. Anda dapat memilih salah satu dari dua cara ini:
${XDG_CONFIG_HOME:-$HOME/.config}/nvim/lua/custom.lua
.${XDG_CONFIG_HOME:-$HOME/.config}/nvim/lua/custom/
jika konfigurasi khusus Anda terlalu panjang, dan Anda ingin memisahkannya menjadi beberapa file.Lihat contoh file khusus untuk titik awal. Logikanya diambil dari CyberNvim. Ada sejumlah bagian yang ditentukan dalam konfigurasi:
M.setup_sources
digunakan untuk menambahkan sumber tambahan untuk terhubung ke Null-ls - Anda dapat menemukan daftar sumber di sini. Parameter b hanyalah kependekan dari null_ls.builtins.M.ensure_installed
digunakan untuk menambahkan highlighter Treesitter tambahan.M.plugins
adalah tempat Anda menambahkan definisi plugin Anda sendiri.M.configs
adalah bagian terpenting dari konfigurasi Anda sendiri. Di sinilah Anda dapat menentukan perintah otomatis apa pun, memerlukan file apa pun, atau mem-porting konfigurasi Anda saat ini sepenuhnya.M.formatting_servers
digunakan untuk mengatur aturan pemformatan otomatis. Anda harus memilih server bahasa yang akan menyediakan kemampuan pemformatan otomatis Jangan ragu untuk mengajukan masalah atau membuka permintaan tarik. Terima kasih kembali!