0Pricing
Lua Academy · Pelajaran

Perintah dan Pemetaan Tombol

Tambahkan tindakan yang dapat digunakan pengguna.

Perintah dan Pemetaan Tombol adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.

Ikhtisar Perintah Pengguna

Perintah pengguna adalah perintah bertanda titik dua yang disediakan plugin Anda, seperti :Format atau :Telescope. Perintah tersebut harus diawali huruf besar.

nvim_create_user_command mendefinisikannya di Lua dengan menerima nama, callback atau string, dan tabel opsi. Ini menggantikan :command dari Vimscript.

vim.api.nvim_create_user_command('Hello', function()
  print('Hello from my plugin')
end, {})

Argumen Perintah

Atur nargs untuk menerima argumen: '0', '1', '*', '?', atau '+'. Callback menerima tabel opts dengan args, fargs, dan bang.

fargs adalah daftar argumen yang sudah dipisahkan berdasarkan spasi kosong, dan biasanya itulah yang Anda perlukan.

vim.api.nvim_create_user_command('Greet', function(opts)
  print('Hi ' .. opts.args)
end, { nargs = 1 })

Perintah Rentang dan Tanda Seru

Berikan range = true untuk menerima rentang baris; callback kemudian membaca opts.line1 dan opts.line2. Tambahkan bang = true untuk mengizinkan :Cmd!, yang dikenali melalui opts.bang.

Penanda ini memungkinkan satu perintah berperilaku berbeda untuk pilihan visual atau varian paksa.

vim.api.nvim_create_user_command('Sum', function(o)
  print(o.line1 .. ' to ' .. o.line2)
end, { range = true })

Pelengkapan Perintah

Sediakan pelengkapan Tab dengan opsi complete. Gunakan fitur bawaan seperti 'file' atau 'buffer', atau fungsi Lua khusus.

Fungsi pelengkap khusus menerima argumen sebagian dan baris perintah, lalu mengembalikan daftar string kandidat.

vim.api.nvim_create_user_command('Pick', function(o) print(o.args) end, {
  nargs = 1,
  complete = function() return { 'red', 'green', 'blue' } end,
})

Perintah Lokal Buffer

Untuk membatasi cakupan perintah ke satu buffer, gunakan nvim_buf_create_user_command dengan pegangan buffer tersebut. Cara ini umum digunakan dalam plugin jenis berkas.

Misalnya, plugin Markdown dapat mendefinisikan :Preview hanya di dalam buffer Markdown, sehingga ruang nama global tetap bersih.

vim.api.nvim_buf_create_user_command(0, 'Preview', function()
  print('previewing this buffer')
end, {})

Memperkenalkan vim.keymap.set

vim.keymap.set adalah API pemetaan modern. Fungsi ini menerima mode, tombol sebelah kiri, string atau fungsi Lua sebelah kanan, dan tabel opsi.

Berbeda dari nvim_set_keymap lama, fungsi ini menerima callback Lua secara langsung sebagai sisi kanan, tanpa memerlukan pembungkusan <cmd>lua.

vim.keymap.set('n', '<leader>w', function()
  vim.cmd('write')
end, { desc = 'Save file' })

Mode dan Pemetaan Ganda

Argumen mode dapat berupa satu string seperti 'n' atau tabel seperti { 'n', 'v' } untuk memetakan beberapa mode sekaligus.

Mode umum: n normal, i sisipkan, v visual, x khusus visual, t terminal. String kosong '' berarti normal, visual, dan menunggu operator.

vim.keymap.set({ 'n', 'v' }, '<leader>y', '"+y', { desc = 'Yank to clipboard' })

Opsi Pemetaan

Tabel opts mengendalikan perilaku. silent = true menyembunyikan gema perintah, noremap bernilai true secara bawaan demi keamanan, dan buffer = 0 membatasi pemetaan ke buffer saat ini.

Selalu tambahkan desc agar keluaran which-key dan :map tetap mudah dibaca.

vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {
  buffer = 0, silent = true, desc = 'Go to definition',
})

Pemetaan Ekspresi

Dengan expr = true, fungsi sisi kanan mengembalikan tombol yang akan diteruskan. Fitur ini mendukung pemetaan cerdas, misalnya membuat <Tab> berperilaku berbeda saat menu pelengkapan terlihat.

Kembalikan string kosong untuk tidak melakukan apa pun, atau tombol harfiah yang akan disisipkan.

vim.keymap.set('i', '<Tab>', function()
  return vim.fn.pumvisible() == 1 and '<C-n>' or '<Tab>'
end, { expr = true })

Menghapus Pemetaan

Hapus pemetaan dengan vim.keymap.del, dengan meneruskan mode dan tombol yang sama, serta bidang buffer jika pemetaan tersebut khusus buffer.

Hal ini berguna dalam rutinitas pembersihan atau saat plugin menonaktifkan fitur dan harus mengembalikan pemetaan asli pengguna.

vim.keymap.del('n', '<leader>w')
vim.keymap.del('n', 'gd', { buffer = 0 })

Menggabungkan Perintah dan Pemetaan Tombol

Pola yang rapi adalah mendefinisikan logika satu kali, menyediakannya sebagai perintah pengguna, lalu mengikat tombol untuk memanggil perintah tersebut. Dengan begitu, hanya ada satu sumber kebenaran.

Memetakan ke <cmd>Hello<cr> mencegah Anda keluar dari mode visual dan lebih mudah diprediksi daripada :Hello<cr>.

vim.api.nvim_create_user_command('Toggle', function() end, {})
vim.keymap.set('n', '<leader>t', '<cmd>Toggle<cr>', { desc = 'Toggle' })

Pemeriksaan Singkat

Periksa pemahaman Anda tentang perintah dan pemetaan tombol.

Rangkuman: Perintah dan Pemetaan Tombol

Sekarang Anda dapat membuat perintah dengan nvim_create_user_command, mengendalikannya melalui nargs, range, bang, dan complete, serta membatasi cakupannya per buffer.

Untuk pemetaan, vim.keymap.set menerima callback Lua, beberapa mode, dan opsi seperti desc, silent, buffer, serta expr, sedangkan vim.keymap.del digunakan untuk pembersihan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Perintah dan Pemetaan Tombol” gratis?

Ya — teks lengkap “Perintah dan Pemetaan Tombol” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Perintah dan Pemetaan Tombol”?

Tambahkan tindakan yang dapat digunakan pengguna. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Lua Academy?

Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Perintah dan Pemetaan Tombol” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. API Lua Neovim
  2. Perintah dan Pemetaan Tombol
  3. Buffer dan Jendela
  4. Mengemas Plugin
← Kembali ke Lua Academy