Nvim の :help
ページ。 生成されたもので、ソース を tree-sitter-vimdoc パーサーを使用して生成されています。
:edit term://bash
:vsplit term://top
autocmd VimEnter * ++nested split term://sh
term://{cwd}//{pid}:{cmd}
の形式で名前付けられます。この命名スキームは、:mksession によってターミナルバッファを復元するために使用されます({cmd}
を再起動します)。<C-\>
を除くすべてのキーが基礎となるプログラムに送信されます。<C-\>
が押された場合、次のキーが送信されます(<C-N>
または <C-O>
を除く)。通常モードに戻るには、<C-\>
<C-N>
を使用します。CTRL-\_CTRL-N 1つの通常モードコマンドを実行してターミナルモードに戻るには、<C-\>
<C-O>
を使用します。t_CTRL-\_CTRL-O<Esc>
をマップしてターミナルモードを終了するには:tnoremap <Esc> <C-\><C-n>
ターミナルモードで i_CTRL-R をシミュレートするには:tnoremap <expr> <C-R> '<C-\><C-N>"'.nr2char(getchar()).'pi'
任意のモードから ALT+{h,j,k,l}
を使用してウィンドウを移動するには:tnoremap <A-h> <C-\><C-N><C-w>h
:tnoremap <A-j> <C-\><C-N><C-w>j
:tnoremap <A-k> <C-\><C-N><C-w>k
:tnoremap <A-l> <C-\><C-N><C-w>l
:inoremap <A-h> <C-\><C-N><C-w>h
:inoremap <A-j> <C-\><C-N><C-w>j
:inoremap <A-k> <C-\><C-N><C-w>k
:inoremap <A-l> <C-\><C-N><C-w>l
:nnoremap <A-h> <C-w>h
:nnoremap <A-j> <C-w>j
:nnoremap <A-k> <C-w>k
:nnoremap <A-l> <C-w>l
:tmenu の代わりに :tlmenu を使用して、ターミナルモードのマッピングと同様のメニューを作成することもできます。au TermOpen * setlocal list
{g,b}:terminal_color_x
変数は、ターミナルのカラーパレットを制御します。ここで、x
は 0 から 15 までのカラーインデックスです。TermOpen の間読み取られます。値は、カラー名または 16 進数の文字列である必要があります。例:let g:terminal_color_4 = '#ff0000'
let g:terminal_color_5 = 'green'
RGB UI でのみ機能します('termguicolors' を参照)。256 色ターミナルの場合、カラーインデックスはそのまま転送されます。vim.api.nvim_create_autocmd({ 'TermRequest' }, {
desc = 'Handles OSC 7 dir change requests',
callback = function(ev)
if string.sub(vim.v.termrequest, 1, 4) == '\x1b]7;' then
local dir = string.gsub(vim.v.termrequest, '\x1b]7;file://[^/]*', '')
if vim.fn.isdirectory(dir) == 0 then
vim.notify('invalid dir: '..dir)
return
end
vim.api.nvim_buf_set_var(ev.buf, 'osc7_dir', dir)
if vim.o.autochdir and vim.api.nvim_get_current_buf() == ev.buf then
vim.cmd.cd(dir)
end
end
end
})
vim.api.nvim_create_autocmd({ 'BufEnter', 'WinEnter', 'DirChanged' }, {
callback = function(ev)
if vim.b.osc7_dir and vim.fn.isdirectory(vim.b.osc7_dir) == 1 then
vim.cmd.cd(vim.b.osc7_dir)
end
end
})
試すには、上記のコードを選択して :'<,'>lua
でソースし、:terminal バッファで次のコマンドを実行します。printf "\033]7;file://./foo/bar\033\\"OSC 52: システムクリップボードへの書き込み terminal-osc52
printf '\033]52;;%s\033\\' "$(echo -n 'Hello world' | base64)"Nvim は、設定された クリップボード プロバイダーを使用して、システムクリップボードに書き込みます。OSC 52 を使用したシステムクリップボードからの読み取りはサポートされていません。これは、任意の :terminal 内のプログラムがユーザーのクリップボードを読み取ることができるようになるためです。
:autocmd TermOpen * setlocal statusline=%{b:term_title}
packadd termdebug
vimrc ファイルからプラグインをロードする場合は、「!」属性を追加します。packadd! termdebug
:Termdebug
または :TermdebugCommand
の後にコマンド名を入力します。例::Termdebug vim
これにより、2 つのウィンドウが開きます。:TermdebugCommand
コマンドの後にコマンド名と追加パラメーターを入力します。:TermdebugCommand vim --clean -c ':set nu'
:Termdebug
と :TermdebugCommand
の両方で、オプションの "!" バング引数を使用して、gdb ウィンドウで一時停止せずにコマンドをすぐに開始できます(カーソルはデバッグ対象のウィンドウにあります)。例::TermdebugCommand! vim --clean
既に実行中の実行可能ファイルに gdb をアタッチするか、コアファイルを使用するには、追加の引数を渡します。例::Termdebug vim core
:Termdebug vim 98343
引数が指定されていない場合、gdb ウィンドウが表示され、そこで例として gdb の file
コマンドを使用して実行するコマンドを指定する必要があります。% makeVim を起動します。
% ./vimtermdebug プラグインをロードし、Vim のデバッグを開始します。
:packadd termdebug
:Termdebug vim
ソース - gdb を開始した場所 - gdb コマンドを入力できます プログラム - 実行中のプログラムはこのウィンドウを使用します の 3 つのウィンドウが表示されます。break ex_help runVim がプログラムウィンドウで実行を開始します。そこにフォーカスを当てて入力します。
:help gui
Gdb は ex_help ブレークポイントに到達します。ソースウィンドウには、ex_cmds.c ファイルが表示されます。ブレークポイントが設定された場所に、赤い "1 " マーカーがサイン列に表示されます。デバッガーが停止した行が強調表示されます。ここでプログラムをステップ実行できます。デバッガーがソースコードの行を実行すると、強調表示が移動します。print *eapマウスポインターの移動が機能している場合、マウスが gdb で評価できるテキストの上に置かれると、Vim はバルーンも表示します。「K」マッピングを使用することもできます。これは、結果を表示するために Nvim のフローティングウィンドウを使用します。
:Break"1" マーカーが表示されます。これは新しいブレークポイントを示しています。ここで ":Cont" コマンドを実行すると、ブレークポイントまでコードが実行されます。
watch curbufここで ":Cont" を実行します(または gdb ウィンドウで "cont" と入力します)。実行は "curbuf" の値が変更されるまで続行されます。これは do_ecmd() にあります。このウォッチポイントを削除するには、gdb ウィンドウで入力します。
delete 3gdb ウィンドウで入力してスタックを確認できます。
whereスタックフレームを移動します(例:)。
frame 3ソースウィンドウには、より深いレベルへの呼び出しが行われた時点のコードが表示されます。
CTRL-C
プログラムを中断します:Run
[args] [args] または以前の引数でプログラムを実行します。:Arguments
{args}
次の:Run
のための引数を設定します。{position}
指定した位置にブレークポイントを設定します。:Tbreak カーソル位置に一時ブレークポイントを設定します。:Tbreak {position}
指定した位置に一時ブレークポイントを設定します。:Clear カーソル位置のブレークポイントを削除します。:Next
はVimコマンドです):Until gdbの"until"コマンドを実行します。:Finish gdbの"finish"コマンドを実行します。:Continue gdbの"continue"コマンドを実行します。:Stop プログラムを中断します。:Clear
コマンドを使用するか、「ブレークポイントのクリア」コンテキストメニューを使用することもできます。:Evaluate
カーソル下の式を評価します。K
同様 (無効化するには termdebug_map_K を参照) :Evaluate
{expr}
{expr}
を評価します。:'<,'>Evaluate
視覚的に選択したテキストを評価します。:Evaluate
を:Ev
と短縮できます。結果はフローティングウィンドウに表示されます。:Evaluate
(またはK
)を再度実行することで、このウィンドウにカーソルを移動できます。:Frame
[frame] フレーム[frame]を選択します。フレーム番号、アドレス、または関数名です(デフォルト:現在のフレーム)。:Up
[count] [count] フレーム上に移動します(デフォルト:1; 現在のフレームを呼び出したフレーム)。+
同様 (無効化するには termdebug_map_plus を参照)。:Down
[count] [count] フレーム下に移動します(デフォルト:1; 現在のフレームによって呼び出されたフレーム)。-
同様 (無効化するには termdebug_map_minus を参照)。au User TermdebugStartPre echomsg 'debugging starting'
au User TermdebugStartPost echomsg 'debugging started'
au User TermdebugStopPre echomsg 'debugging stopping'
au User TermdebugStopPost echomsg 'debugging stopped'
:Termdebug
または:TermdebugCommand
に「!」bangが渡された場合、gdbで提供されたコマンドを実行する前にイベントがトリガーされます。TermdebugStopPrelet g:termdebug_config = {}
その後、下記のように辞書にエントリを追加できます。非推奨のグローバル変数名は、完全性を期して記載されています。g:termdebug_configの使用に切り替える場合は、古い変数名を見つけて値を引き継ぎ、非推奨の変数を削除できます。<Esc>
でノーマルモードに切り替え、バッファ内を移動したり、コピー/ペーストしたりできます。a
やi
など、挿入モードを開始するコマンドを使用することで、gdbコマンドの編集に戻ることができます。let g:termdebug_config['use_prompt'] = 1
g:termdebug_configがない場合は、以下を使用できます。let g:termdebug_use_prompt = 1
let g:termdebug_config['map_K'] = 0
g:termdebug_configがない場合は、以下を使用できます。let g:termdebug_map_K = 0
let g:termdebug_config['map_minus'] = 0
let g:termdebug_config['map_plus'] = 0
let g:termdebug_config['disasm_window'] = 1
let g:termdebug_config['disasm_window_height'] = 15
g:termdebug_configがない場合は、以下を使用できます。let g:termdebug_disasm_window = 15
1より大きい値を設定すると、Asmウィンドウの高さがその値に設定されます。現在のウィンドウに十分な水平方向のスペースがある場合、垂直方向に分割され、Asmウィンドウはソースコードウィンドウと並べて表示されます(高さオプションは使用されません)。let g:termdebug_config['variables_window'] = 1
let g:termdebug_config['variables_window_height'] = 15
g:termdebug_configがない場合は、以下を使用できます。let g:termdebug_variables_window = 15
1より大きい値を設定すると、Varウィンドウの高さがその値に設定されます。現在のウィンドウに十分な水平方向のスペースがある場合、垂直方向に分割され、Varウィンドウはソースコードウィンドウと並べて表示されます(高さオプションは使用されません)。CTRL-C
を使用して実行中のプログラムを中断できます。しかし、MIコマンド「-exec-continue」を使用した後は、CTRL-C
を押しても中断されません。そのため、通信チャネルを使用する代わりに、:Continue
コマンドには「continue」が使用されます。:Termdebug
を呼び出す前に、g:termdebug_configの「debugger」エントリまたは「g:termdebugger」変数を設定します。let g:termdebug_config['command'] = "mygdb"
g:termdebug_configがない場合は、以下を使用できます。let g:termdebugger = "mygdb"
コマンドに引数が必要な場合は、リストを使用します。let g:termdebug_config['command'] = ['rr', 'replay', '--']
g:termdebug_configがない場合は、以下を使用できます。let g:termdebugger = ['rr', 'replay', '--']
マウスを使用する場合は、カーソル下の変数を評価するなどのターミナルコマンドのいずれかに、右クリックを使用してマッピングを定義することもできます。nnoremap <RightMouse> :Evaluate<CR>
または、ブレークポイントの設定/解除を行います。nnoremap <RightMouse> :Break<CR>
gdbをデバッガとして適切に動作させるために、いくつかの引数が追加されます。それらを変更する場合は、引数リストをフィルタリングする関数を追加します。let g:termdebug_config['command_filter'] = MyDebugFilter
引数を追加したくないが、「pty」を設定する必要がある場合は、必要な引数を追加する関数を使用します。let g:termdebug_config['command_add_args'] = MyAddArguments
この関数は、これまでの引数のリストと、ptyの名前という2番目の引数を使用して呼び出されます。gdb-versionmap ,w :call TermDebugSendCommand('where')<CR>
引数はgdbコマンドです。:Break
ブレークポイントのクリア:Clear
評価:Evaluate
これを望まない場合は、無効にしてください。let g:termdebug_config['popup'] = 0
g:termdebug_configがない場合は、以下を使用できます。let g:termdebug_popup = 0
let g:termdebug_config['sign'] = '>>'
g:terminal_configがまだない場合は、以下を使用できます。let g:termdebug_config = {'sign': '>>'}
これにより、ブレークポイントはサイン列に>>
と表示されます。let g:termdebug_config['wide'] = 163
g:termdebug_configがない場合は、以下を使用できます。let g:termdebug_wide = 163
これにより、:Termdebug
が使用されると'columns'が163に設定されます。デバッガを終了すると、値は復元されます。