生成AIにコードを入力する際、ファイル名とバッファの中身を手でコピーしていたのですが、一発でできるようにコマンドを作りました。
Copilot向けのプラグインを入れて、チャットで聞いてたりもしていましたが、やはりClaude 3 OpusやGPT-4oに聞いた方が良い結果が得られたりするのでいまだにコピペしてやってます
便利すぎて毎日使ってるので、Qiitaにメモしておきます・・・!
ファイル名とバッファの内容をコピー
現在開いているファイルのパスとバッファ内容を、コードブロック付きでクリップボードにコピーします。
キーマップは好みで変えてください。
keymaps.lua
-- ファイル名とバッファ内容をコピー
local function copy_buffer_with_path_and_code_block()
local path = vim.fn.expand "%:."
local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
local content = table.concat(lines, "\n")
local text = string.format("%s\n```\n%s\n```\n", path, content)
vim.fn.setreg("*", text)
vim.notify("Copied buffer: " .. path, vim.log.levels.INFO)
end
vim.keymap.set("n", "<Leader>Y", copy_buffer_with_path_and_code_block, { noremap = true, silent = true })
任意のファイルを開き、<Leader>Y
をすると下記がコピーされてるはずです
サンプル
init.lua
```
require "global_utils"
require "lua_rocks"
require "base"
require "autocmds"
require "options"
require "keymaps"
require "init_lazy"
```
ファイルパスをコピー
パスをコピーする関数もおまけで貼っておきます
keymaps.lua
-- ファイルパスをコピー
local function copy_current_file_path()
local path = vim.fn.expand "%:."
vim.fn.setreg("*", path)
vim.api.nvim_echo({ { "Copied: " .. path, "None" } }, true, {})
end
Keymap("<Leader>yp", copy_current_file_path)
vim.keymap.set("n", "<Leader>y", copy_current_file_path, { noremap = true, silent = true })