2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Neovimでファイル名とバッファ内容をコピー

Last updated at Posted at 2024-07-30

生成AIにコードを入力する際、ファイル名とバッファの中身を手でコピーしていたのですが、一発でできるようにコマンドを作りました。

Copilot向けのプラグインを入れて、チャットで聞いてたりもしていましたが、やはりClaude 3 OpusやGPT-4oに聞いた方が良い結果が得られたりするのでいまだにコピペしてやってます:cry:
便利すぎて毎日使ってるので、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 })
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?