🧠

アセンブリ日記 (α) 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