0

I often keep a :terminal open on the right of a vertical split, and on the left keep a window open for files:

------------------------------
|              |             |
| file buffers | :terminal   |
|              |             |
------------------------------

When navigating through the terminal window in normal mode, I'd like to be able to type gf when the cursor is positioned over a file path and have it opened in the left window. Is anyone aware of a plugin or script that will allow this sort of thing? Even a snippet to get me started would be helpful. :)

Bonus: git diff shows file paths prefixed with a/ and b/. It would be great to somehow use gf on those as well, with the prefixes ignored:

             
diff --git a/dev/pricing_scenario_service/repl_core.clj b/dev/pricing_scenario_service/repl_core.clj

Thanks!

apostl3pol
  • 159
  • 5

1 Answers1

1

Here is what I would do:

If you leave terminal mode (Ctrl-\n) you can hit Ctrl-wv to duplicate the vertically the tab and hit gf to navigate to the file you would like.

Here is a sequence of key that could make the job:

  • Ctrl-\n Leave terminal mode
  • Ctrl-wv Create a vertical split that duplicate the buffer
  • Ctrl-wShift-h Move the created split to the extreme left
  • gf Open the corresponding file in the created buffer
  • Ctrl-wl Switch to the window that need to be closed
  • q Quit the window

In total: Ctrl-wvCtrl-wShift-hgfCtrl-wl:qEnter

You could create a mapping:

tnoremap gf <C-\><C-n><C-w>v<C-w>Hgf<C-w>l:q<CR>
nnoremap gf &buftype==#'terminal' ? "<C-w>v<C-w>Hgf<C-w>l:q<CR>" : 'gf'

The following answer Open filename under cursor like gf, but in a new tab (or split) gives interesting pointer.

Vivian De Smedt
  • 16,336
  • 3
  • 18
  • 37
  • 1
    Brilliant. The nnoremap line was messing with gf in non-terminal buffers, so I added a test for &buftype == 'terminal' in a separate function. – apostl3pol Dec 21 '22 at 23:16
  • 1
    @apostl3pol Thanks for the feedback. I have integrated your idea into the solution. – Vivian De Smedt Dec 22 '22 at 09:20
  • 1
    One more thing I noticed today is that the tnoremap command is executed whenever I type gd at the terminal prompt! I'm just omitting it because I really do only want it in normal mode. – apostl3pol Dec 23 '22 at 20:34
  • 1
    I suppose you mean gf the only way I see is to make the key séquence more rare or to make it dependent of the context. – Vivian De Smedt Dec 23 '22 at 22:01