๐ who5673-nasm - A plugin for Lazy.nvim that helps you program Netwide Assembler (NASM) language.
June 15, 2026 ยท View on GitHub
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.
โน๏ธ Basic information about who5673-nasm:
Manufacturing date : The 13th of July 2025
GitHub link: https://github.com/Who5673/who5673-nasm
๐ง Our website is maintaining:
https://who5673.github.io/coc-nasm-web
- In order to help you program Netwide Assembler language, we are going to make a website for you.
- However, this website is being worked in progress.
๐ฆ Installation
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.
Lazy.nvim:
- If you do not install plugin via
$HOME/.config/nvim/lua/plugins/init.lua, you need to createwho5673-nasm.luafirst using:
touch $HOME/.config/nvim/lua/who5673-nasm.lua
- Whether you use
init.lua(in$HOME/.config/nvim/lua/plugins/) or thatwho5673-nasm.lua, you still need to add this script intoreturn {...}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,
}
- Install
nvim-cmplike 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" },
},
mapping = cmp.mapping.preset.insert({
["<CR>"] = cmp.mapping.confirm({ select = true }),
}),
})
end,
},
}
Now you have done the installation of who5673-nasm in lazy.nvim.
Packer.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({
["<Enter>"] = cmp.mapping.confirm({ select = true }), -- I use <Enter> instead of carriage return <CR>
}),
})
end,
}
Now you have done the installation of who5673-nasm in packer.nvim.
๐จ Basic features:
who5673-nasm has many snippets and completions such as:
- ๐๐ป Having completions for 64-bit, 32-bit, 16-bit, 8-bit and segment registers;
After June 14th, 2026,
who5673-nasmalso supports more SSE, AVX and AVX-512 ISA syntaxes; - ๐๐ฝ Supports many Netwide Assembler commands and preprocessors;
โ๏ธ Snippets:
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:

โ๏ธ Completions
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.
โ๏ธ How to use snippets and completions in who5673-nasm:
Just like how you deal with snippets and completions in Neovim.
- Choose the snippet or completion you want to use.
LuaSnipinitializes snippets.nvim-cmpshows them, it also initializes completions.
So do not be worry that the snippets and completions will not appear. I also place my contact atcontact.txtin GitHub link. I, nevertheless, still need time to read your report.
โ ๏ธ Note:
- Different from
coc-nasmand many plugins,who5673-nasmdoes not have a specific version; - As
nvimis a hard Integrated Develop Environment for most people, I think you might want not to configure more things before using this plugin effectively; - Because of the high difficulty of Lua and plugins in Neovim, the update I make can have bugs and errors so please sympathise;
- Assembly language has a language server named
asm-lsp(GitHub link: https://github.com/bergercookie/asm-lsp) and a formatter namedasmfmt(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; - Switch your thought to the case you are coding Assembly Languages and you think it is hard to code it. If you were in that situation, I would like to ask you a question:
Would you like to create and develop plugins for programming Assembly Languages in the world, especially in Lazy.nvim and Mason.nvim?
Come up with and answer that question if you want. You do not need to send your answer to me; - Even though this plugin is not famous anymore, I will carry on developing newer versions of this plugin with no reasons;
๐ See also
-
coc-nasmis another repository that is make by me (Who5673) for programming NASM language usingcoc.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.
๐ชช Metadata about this plugin:
Product meta information:
Copyright ยฉ 2025 - 2026 Who5673. All Rights Reserved.
This is an official NASM plugin made by Who5673.
๐ License:
MIT