Due to the high difficulty of Vietnamese Grade 10 Entrance Exam 2026 - 2027, I cannot update this plugin regularly from the 5th of 2025 to the 31st of 2026. I need to spend my time focusing on the skills to do that exam (I am just 15 years old).
The plugin named coc-nasm has been released since the 6th of July, 2025, to help you code faster with snippets and auto-completions. However, It needs coc.nvim as its dependency, and coc.nvim is not a modern plugin manager in nvim (due to the action that we use Lazy and Mason as our plugin manager instead). We cannot download it if we do not use coc.nvim plugin manager (as that plugin makes for normal Vi Improved, not Neovim, though it still can run in it via init.vim).
đ From that reason, who5673-nasm is going to be developed as a plugin which helps you code faster like coc-nasm on Lazy plugin manager. We will go through that plug in order to find some information about it.
Manufacturing date : The 13th of July 2025
GitHub link: https://github.com/Who5673/who5673-nasm
https://who5673.github.io/coc-nasm-web
First, run:
git config --global credential.helper store
Or use SSH Key instead. I have added this method as since July 25th, 2025, I have a problem while cloning this plugin (git prompts for username and password, since they are all deprecated).
đĄ Recommend to create your own GPG or SSH key before using this plugin.
Then, you need to install plugin's dependencies:
âĄī¸ Install LuaSnip first (GitHub Link: https://github.com/L3MON4D3/LuaSnip).
âĄī¸ Install nvim-cmp (GitHub Link: https://github.com/hrsh7th/nvim-cmp) but not now.
Scroll down to see how to do that, as if you install using a wrong way, who5673-nasm plugin can be useless.
$HOME/.config/nvim/lua/plugins/init.lua, you need to create who5673-nasm.lua first using:touch $HOME/.config/nvim/lua/who5673-nasm.lua
init.lua (in $HOME/.config/nvim/lua/plugins/) or that who5673-nasm.lua, you still need to add this script into return {...} command (you must learn how to program Lua if you want to understand):return {
"Who5673/who5673-nasm", -- Or git@github.com:Who5673/who5673-nasm if you use SSH Key (recommended)
dependencies = {
"L3MON4D3/LuaSnip",
"hrsh7th/nvim-cmp"
},
ft = "nasm",
lazy = true,
}
nvim-cmp like this. You do not need to take down like this script, but that thing will help you know the way to configure snippets and completions for who5673-nasm:$HOME/.config/nvim/lua/plugins/cmp.lua (if you do not have, please manually make it by yourself)
return {
{
"hrsh7th/nvim-cmp",
event = "InsertEnter",
dependencies = {
"L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip",
"hrsh7th/cmp-path",
"hrsh7th/cmp-nvim-lsp",
},
enabled = true, -- Very important! Lazyvim may disable this plugin when we download it.
config = function()
local cmp = require("cmp")
local luasnip = require("luasnip")
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "path" },
{ name = "nasm_registers" },
{ name = "nasm_instructions" },
},
})
end,
},
}
Now you have done the installation of who5673-nasm in lazy.nvim.
The file path you need to install this plugin is just like lazy.nvim, but has different script.
$HOME/.config/nvim/lua/plugins/init.lua or $HOME/.config/nvim/lua/plugins.lua:
use {
'Who5673/who5673-nasm',
opt = true,
requires = {{'L3MON4D3/LuaSnip', opt = true}, {'hrsh7th/nvim-cmp', opt = true}}
ft = {'nasm'},
}
Just like the Lazy one, I need to tell you how to configure nvim-cmp in order to make my plugin work well.
$HOME/.config/nvim/lua/plugins/cmp.lua:
use {
"hrsh7th/nvim-cmp",
event = "InsertEnter",
requires = {
{ "L3MON4D3/LuaSnip" },
{ "saadparwaiz1/cmp_luasnip" },
{ "hrsh7th/cmp-path" },
{ "hrsh7th/cmp-nvim-lsp" },
{ "Who5673/who5673-nasm" },
},
config = function()
local cmp = require("cmp")
local luasnip = require("luasnip")
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "path" },
{ name = "nasm_registers" },
{ name = "nasm_instructions" },
}),
mapping = cmp.mapping.preset.insert({
["<Down>"] = cmp.mapping.select_next_item(),
["<Up>"] = cmp.mapping.select_prev_item(),
["<CR>"] = cmp.mapping.confirm({ select = true }),
}),
})
end,
}
Now you have done the installation of who5673-nasm in packer.nvim.
who5673-nasm has many snippets and auto-completions such as:
SSE, AVX and AVX-512 Instruction Set Architecture syntax;Currently, these are snippets which can be used:
| Snippets (current) | Functions |
|---|---|
| sum | Generate an example of a function in NASM. |
| exit | Generate the script to exit a program in NASM. |
| function | Generate a template to help you create a function. |
| @@@ | Make a layout of NASM script so as to let you code faster (as you do not need to code the start of the program). |
| @ | Generate a demo script in NASM (it prints "Hello world") when being compiled if you do not modifier it after using this snippet. |
These are removed snippets. They were added in earlier versions of this plugin:
| Snippets (removed) | Removing day (mm/dd/yy) | Functions |
|---|---|---|
| basicoutput | 11/10/2025 | : Generate a tamplate of a basic output which prints the text into stdout (terminal screen). |
| basicinput | 11/10/2025 | : Generate a template of a basic prompt (user input) which prompts the user to take down their texts into the variable in the stdin. |
I also have some example screens for you to know what you get after installing this plugin:
Maybe not all the Netwide Assembler's commands are showed by these things. I will update them in order to keep up with nasm syntax as soon as I can.
Just like how you deal with snippets and completions in Neovim.
LuaSnip initializes snippets.nvim-cmp shows them, it also initializes completions.contact.txt in GitHub link. I, nevertheless, still need time to read your report.nvim is a hard Integrated Develop Environment for most people, I think you might want not to configure more things before using this plugin effectively;asm-lsp (GitHub link: https://github.com/bergercookie/asm-lsp) and a formatter named asmfmt (GitHub link: https://github.com/klauspost/asmfmt). From that reason, I do not want to create other things like debugger and real-time error in this plugin. You need to use them or find other ones;coc-nasm is another repository that is make by me (Who5673) for programming NASM language using coc.nvim. You can see that plugin by going to this website:
https://github.com/Who5673/coc-nasm
Thanks to The Netwide Assembler Hyper Text Markup Language document for providing me with many important skills about programming this Assembler.
Have fun while using my plugin.
Copyright © 2025 - 2026 Who5673. All Rights Reserved.
This is an official NASM plugin made by Who5673.
MIT