🧠
アセンブリ日記 (α) vimショートカットで爆速コーディングの術
アセンブリをテンプレ化できないか
アセンブリは一般的に低級言語と呼ばれており、抽象化が少ないものにそう呼ばれています。
詳しく説明すると、CPUのレジスタやメモリをいちいち操作して調整する手順を記さないといけないのが低級、低レイヤーということ。
その、「いちいち操作」の部分をショートカット1つでテンプレを呼び出せたらすごい楽だと思いませんか?(やってることはオブジェクト指向に似ています)
そこで、neovimの出番です。neoの秘めたる力、それはショートカットを全部自分好みに設定できるのです!
neovimについては別記事で詳しく書くか、各自調べてください(><)
neovimでのショートカット例
自分の使っている設定を一部共有させていただきます。
init.luaにはこう書きます。lazy.nvimを使っている人はそれより上にしてください。
init
-- ========================
-- y-shot
-- ========================
local path = vim.fn.stdpath("config") .. "/y-shot"
for _, file in ipairs(vim.fn.readdir(path)) do
if file:match("%.lua$") then
local name = file:gsub("%.lua$", "")
vim.keymap.set("n", "<leader>y" .. name, function()
dofile(path .. "/" .. file)
end, { desc = "y-shot: " .. name })
end
end
init.luaと同じディレクトリ内にy-shotというフォルダをつくります
y-shotの中にファイル名a.luaとして以下の内容をコピペしてください。
a
vim.api.nvim_put(vim.split(([[
section .text
global _start
_start:
mov rax, 60
xor rdi, rdi
syscall
]]):gsub("^%s*\n", ""), "\n"), "c", true, true)
これで、ノーマルモード中に<leader>+yのあとaを押すとnvim_put()内のテンプレがでてきます。
<アルファベット>.luaでそのままショートカットにできるのであと30個くらいはショートカットを作れますね!
アセンブリじゃなくてもC++やlispなどにも応用できていいんじゃないでしょうか?
Discussion