Skip to main content

コマンドラインの実行結果を新しいバッファに追記するコマンドを作成

s-show
s-show

20 days前に投稿

0
License: MIT

LUA
vim.api.nvim_create_user_command('Redir', function(ctx)
  local pcall_result, function_return = pcall(vim.fn.execute, ctx.args)
  vim.cmd('new')
  vim.api.nvim_buf_set_lines(0, 0, -1, false, vim.split(function_return, '\n', { plain = true }))
  vim.opt_local.modified = false
end, { nargs = '+', complete = 'command' })

Neovimで出力結果を新しいバッファに表示するコマンド

Neovim でコマンドを実行した際、その出力結果をじっくり確認したい場合があります。通常、コマンドの出力はメッセージ領域に表示されますが、内容が多いと見切れてしまったり、すぐに消えてしまったりして不便です。

今回紹介する Redir コマンドは、任意の Vim コマンドの出力結果を新しいバッファに表示してくれる便利な機能です。

使い方

設定後は、:Redir の後に任意の Vim コマンドを指定することで使用できます:

:Redir set all          " すべての設定項目を表示
:Redir map              " すべてのキーマッピングを表示
:Redir scriptnames      " 読み込まれているスクリプトの一覧
:Redir highlight        " ハイライト設定の確認

動作の仕組み

  1. pcall を使用してコマンドを安全に実行し、エラーが発生しても処理が止まらないようにしています
  2. :new コマンドで新しいウィンドウとバッファを作成
  3. コマンドの出力結果を改行で分割し、新しいバッファに挿入
  4. modified フラグを false に設定することで、誤って保存しようとしても警告が出ないようにしています

メリット

  • スクロール可能: 長い出力もゆっくり確認できます
  • 検索可能: /? で内容を検索できます
  • コピー可能: 通常のテキストとして扱えるため、必要な部分をコピーできます
  • 比較が簡単: 複数の出力結果を並べて比較することも可能です

この設定を追加することで、Neovim での設定確認やデバッグ作業がより効率的になります。


コメントを投稿するにはログインが必要です