exactly. imo running a terminal is not a text editor concern. heck, even tmux/zellij is the “incorrect” solution. preference of course, but i’ll have my window manager or terminal emulator handle that, thank you.
Would love to hear more about floating windows, yeah. Especially around Telescope, but also being able to run a command, close the floaty, and be able to come back to it. I'm imagining a case where you ran a test library in watch mode.
I don't know how it works but nvchad provides that with their own implementation of terminal in neovim. You can press to toggle a floating terminal and it works really well.
Yes, please a video on floating windows! Actually, any video of you tinkering with NVim is god-sent for my first Nvim config, I just pick what clicks with me and take note of the shortcuts you use on screen. Keep em coming!
Sine a few versions (I don't remember when exactly), you can also use the ":term" command prefixed with ":vert" or ":hor" to directly open the terminal in a split. I use that quite a lot to put a terminal wherever it suits me in the moment.
@@trkishhtoo much indirection. the request to draw something on the screen goes from the shell to the terminal running within the editor, to the outer terminal emulator. a lot of wasted CPU cycles doing unnecessary processing. just open a separate terminal window
Awesome, could you also explain how to pass "settings" for the terminal eg passing environment variables to the term, running the term as a different user, opening a lua cmd with all the loaded variables and packages in the running nvim instance
Thanks for all those videos! Learning a lot. I'm in for a floating window terminal that we can toggle ... and NeoVIM will allow me to remove one more tool from my workflow!
7:39 you had the answer about how to hit enter right in front of you, and even read it out loud. you give it a list, and make the last item an empty string
install wezterm, it is rust based high performance stable multiplexer, it can be configured to be like browser, I mean CRL + t, n, w or , to create new windows , tab , close or go back and forth between these tabs (in addition to pane - which can be both horizontally and vertically), then in each pane, tab or windows ,you can have nvim running
I love the builtin terminal. Been using it for years. The only thing that annoys me is when I have a long line wrapped, selected, yanked, then I paste it into a file buffer and voila the linebreak has been yanked too from the line break. That's it, everything else is cool as a freezer!
You can probably create an autocommand that when you yank and your inside a terminal buffer, it will automatically set opts to not wrap, yank, and then set opts back to wrap. Could look janky tho, haven’t tried…
I use this kind of workflow for building docs, which takes 10-30 seconds. During the build I can keep editing. If successful the terminal window auto-closes. If there's an error it stays. Terminal has the benefit that you get color coding. To get the window to auto-close on success I set up an extremely convoluted on_lines callback. Probably there's an easier way?
The example in the help said it joins the commands in the table with a new line, and had an empty string as the last part, I wonder if that would also work. Looks strange to me though, kind of makes more sense I guess
It seems that yesterday lazyvim replaced telescope with fzf-lua and it became my default. Could you make a video about it and compare the differences between them and whether I should go back to telescope and how to do it? Because it seems that now all my keymaps are overwritten with fzf-lua and I don't understand where to change it. It's often so annoying that some configurations are hidden and you don't understand why something works, but you don't have a configuration for it and it's not even clear where to find the source of the truth that is currently being used. This is the biggest problem for me in setting up nvim right now. I hope this will be useful feedback. Thanks for all the videos. Keep up the good work.
I just switched to nvim nightly because of the better lsp support, but I think to get to the terminal on latest stable neovim (0.10.3) it's :Terminal instead of :te[rminal]
Thanks for all your videos. I love them. Really useful to set up my neovim. Do you know how to set up a new line at the end of each file. I tried fixeol and an autocmd but not working :( Thanks for all.
When are you going to fix so that the terminal cursor behaves in the same way as I have configured it outside neovim? I do not want a block cursor for my terminal :(
How do you handle running nvim inside the nvim terminal? (nested nvim) For example, you're in the nvim terminal, you ssh into another box, and start nvim there to edit a file. How the hell does one exit nvim there without quiting your local session?
I used to think I had to have tmux because of all this important imaginary things I was doing with it. Now I just fire it up if I have something that needs to be back there and just dump it to the back ground. I feel like everything is slightly more responsive outside of tmux. I setup my neovim terminal to behave like vscode and cmd-t opens, focus and the same toggles and hides it
@@FedericoDanielAnastasi-b9w I dont know how to share that here, ill try to paste the code maybe you can format it ... --- vscode like terminal --- local terminal_buf = nil local terminal_win = nil local term_job_id = nil local term_size = 5 vim.api.nvim_create_user_command("T", function() -- If terminal buffer doesn't exist, create it, otherwise reuse it if terminal_buf == nil or not vim.api.nvim_buf_is_valid(terminal_buf) then -- vim.cmd("bel " .. term_size .. "split") vim.cmd.vnew() vim.cmd.term() vim.cmd.wincmd("J") vim.api.nvim_win_set_height(0, term_size) terminal_buf = vim.api.nvim_get_current_buf() terminal_win = vim.api.nvim_get_current_win() temr_job_id = vim.bo.channel vim.cmd("startinsert") return end -- Terminal buffer exists, check if it's currently displayed local wins = vim.api.nvim_list_wins() local is_visible = false for _, win in ipairs(wins) do if vim.api.nvim_win_get_buf(win) == terminal_buf then -- Terminal is visible, hide it vim.api.nvim_win_hide(win) is_visible = true break end end -- If terminal wasn't visible, show it if not is_visible then -- this makes smaller termial confined to one window pane vim.cmd("bel " .. term_size .. "split") -- this gives us a full horizontal window even when two panes are opened for more term realstate -- vim.cmd.vnew() -- vim.cmd.wincmd("J") vim.api.nvim_win_set_height(0, term_size) vim.api.nvim_win_set_buf(0, terminal_buf) terminal_win = vim.api.nvim_get_current_win() vim.cmd("startinsert") end end, {}) --- keymaps --- local opts = { noremap = true, silent = true } vim.keymap.set("t", "", [[]], opts) vim.keymap.set({ "n" }, "", ":T", opts) vim.keymap.set({ "i" }, "", ":T", opts) vim.keymap.set("t", "", [[:T]], opts)
I'm conflicted, this is cool and it resembles the other GUI code editors like VSCode, but it feels weird to have nested terminals... is there any disadvantages for using this over a native tab from my terminal emulator? like bugs, input delay, etc.
Hi @TJ, loving these videos. One of the things that is keeping me from switching to Neovim is, the lack of a Command Palette. Sometimes I just want to execute a command on VScode, like for example, closing other open editors, or switching to a different project/workspace. I don't need to define keymaps for those things, I just bring up palette, fuzzy search for the command and hit Enter. Is there a way to create a similar experience using Neovim?
is there a way to somehow set what will be run everytime i do example??? It would be great when you start your workflow to set the compile command and have it easily accessed.
Maybe to get more content out of the floating windows make it be always the same term buffer? Not because I want to put that into my config and I'm too lazy to do it by myself... Not because of that at all...
Yes, video on floating windows please 🥺
you won't convince me to run a shell in a terminal emulator in a text editor within a terminal emulator !
And if you git commit it will open new editor, that is in shell of a terminal emulator in editor itself in a terminal emulator
In a docker container being ran with poweshell in a windows terminal
Did I catch a WSL-2-niner in there?
@@epotnwarlockover vnc on my android
exactly. imo running a terminal is not a text editor concern. heck, even tmux/zellij is the “incorrect” solution. preference of course, but i’ll have my window manager or terminal emulator handle that, thank you.
Appreciate these videos @TJ. Please keep them coming!
Would love to hear more about floating windows, yeah. Especially around Telescope, but also being able to run a command, close the floaty, and be able to come back to it. I'm imagining a case where you ran a test library in watch mode.
Same here, gotta see how to setup a test workflow.
I don't know how it works but nvchad provides that with their own implementation of terminal in neovim. You can press to toggle a floating terminal and it works really well.
Yes, please a video on floating windows!
Actually, any video of you tinkering with NVim is god-sent for my first Nvim config, I just pick what clicks with me and take note of the shortcuts you use on screen.
Keep em coming!
Can this Advent series just become TJ's full-time job please? I'd love a daily Neovim video every day of the year!
Thanks for this series my dude, it has really reignited my love for neovim and I’m learning so much
Amazing series, thanks TJ!
thanks :) glad you're enjoying it!
These videos are so great. Thank you!
I really like these videos.
Quality content
I might have to switch from toggle term
Damn it’s crazy to see how much you can do with neovim when you rtfm
Nice videos , explanations are spot on vs trying to fill in the gaps when i listen to the prime 😂
Thank you TJ!!!! SUPER CLEAR.
Sine a few versions (I don't remember when exactly), you can also use the ":term" command prefixed with ":vert" or ":hor" to directly open the terminal in a split. I use that quite a lot to put a terminal wherever it suits me in the moment.
Terminal in a text editor is a mistake. Love these videos though! You're a super star Teej ❤️
reasonable opinion :)
why?
why i can use all my shortcuts to navigate around and copy stuff from the scrollback its useful as hell
@@trkishhtoo much indirection. the request to draw something on the screen goes from the shell to the terminal running within the editor, to the outer terminal emulator. a lot of wasted CPU cycles doing unnecessary processing. just open a separate terminal window
I just don't like that it doesn't re-flow when resized
Another video I never knew I needed 🙌
Thank you. Please more! 😄
Yes!! Floating windows video please, I'm learning how to use NVIM API this vacations
Would like to see a floating window tutorial! Specifically for a terminal or file tree!
from now on i will call
as registered nurse instead of Carriage Return + Line Feed!
Awesome, could you also explain how to pass "settings" for the terminal eg passing environment variables to the term, running the term as a different user, opening a lua cmd with all the loaded variables and packages in the running nvim instance
Love the series. I'm following along and setting up my nvim for data science
Would love to see the config on toggleable floating windows!
Thanks for all those videos! Learning a lot. I'm in for a floating window terminal that we can toggle ... and NeoVIM will allow me to remove one more tool from my workflow!
i just learned that nvim has a terminal, pretty cool to see more about this tbh
You forgot to mention the nvim paradox. Opening multiple nested nvim instances
Yeah I was hoping for it but he didn't mentioned it. I used `nvr` before but didn't like it a lot. How did you solve that issue?
@ I honestly haven’t. I generally don’t use terminal inside nvim.
Bro has mastered the entire vim API, I envy
Im enjoing every second of this series ❤
Q: what's the nvim way of doing custom plugins per project ?
Thank you my dude :)
floating window +1
7:39 you had the answer about how to hit enter right in front of you, and even read it out loud. you give it a list, and make the last item an empty string
Could you share a video demonstrating how you use Neovim to set up a terminal multiplexing workflow, such as with tmux?
install wezterm, it is rust based high performance stable multiplexer, it can be configured to be like browser, I mean CRL + t, n, w or , to create new windows , tab , close or go back and forth between these tabs (in addition to pane - which can be both horizontally and vertically), then in each pane, tab or windows ,you can have nvim running
This is what I use to run `emacs -nw` in case I need to edit text while I'm in Neovim
Wait, what? 🤣
TJ doesn't miss
floating window floating window floating window
yes to the video on floating windows
I love the builtin terminal. Been using it for years. The only thing that annoys me is when I have a long line wrapped, selected, yanked, then I paste it into a file buffer and voila the linebreak has been yanked too from the line break. That's it, everything else is cool as a freezer!
I have the same issue 😅
You can probably create an autocommand that when you yank and your inside a terminal buffer, it will automatically set opts to not wrap, yank, and then set opts back to wrap. Could look janky tho, haven’t tried…
I am enjoying this
What used to drive me crazy about the nvim terminal was that it did not source my custom functiins.
Any chance you can upload the output from the lessons to the github so I can study these a little slower. Thank you.
i made my first neovim plugin because of the terminal feature, it allows me to embed my file manager i wrote in Go to open files
I can't use neovim terminal because when it inevitably hangs and I have to restart neovim, then there's go all my terminals.
yes. floating window please!! Thank you!
I want the toggely floating terminal window thing
Earlier used to get stuck in nvim inside the terminal, now I'm stuck in the terminal inside nvim 😢
did tj discussed a better way to escape terminal mode? i thought he was going to create a mapping but i didn't saw it in the video.
once pr/issue with native image protocol in neovim terminal is merged i will fully transition my setup
I use this kind of workflow for building docs, which takes 10-30 seconds. During the build I can keep editing. If successful the terminal window auto-closes. If there's an error it stays.
Terminal has the benefit that you get color coding.
To get the window to auto-close on success I set up an extremely convoluted on_lines callback. Probably there's an easier way?
remember to update your notes TJ!
floating windows will be cool.
I'd also be interested to know what process you go through to write a plugin?
Not even acknowledging that :LspRestart tripped over itself. :) Sadly those little papercuts add up.
The example in the help said it joins the commands in the table with a new line, and had an empty string as the last part, I wonder if that would also work. Looks strange to me though,
kind of makes more sense I guess
Please make the float window video.
the only problem that i have with this is that it doesnt scroll to the bottom after it runs the command is there a way to do that?
Yea I also noticed the terminal is kinda weird how it doesn't always scroll with the output
Add a call to vim.cmd.startinsert() to the end of the auto command and you should start right on the terminal prompt.
How about zoom in and out a window , like if we compile something in a term window and many errors appear and we want to see the error clearly
Floating windows would be cool, may replace dependency on toggle term from my config
Woah i didn't know that 👍 thanks
make one on floating window where we can keep our backend server running
Yes please for floating window stuff.
Will you make a video about Debugging in go and different languages
It seems that yesterday lazyvim replaced telescope with fzf-lua and it became my default. Could you make a video about it and compare the differences between them and whether I should go back to telescope and how to do it? Because it seems that now all my keymaps are overwritten with fzf-lua and I don't understand where to change it. It's often so annoying that some configurations are hidden and you don't understand why something works, but you don't have a configuration for it and it's not even clear where to find the source of the truth that is currently being used. This is the biggest problem for me in setting up nvim right now. I hope this will be useful feedback. Thanks for all the videos. Keep up the good work.
I would like to see the toggling of floating windows
I just switched to nvim nightly because of the better lsp support, but I think to get to the terminal on latest stable neovim (0.10.3) it's :Terminal instead of :te[rminal]
If you start a vim terminal and run emacs in it, does it tear the fabric of the space-time continuum?
Thanks for all your videos. I love them. Really useful to set up my neovim.
Do you know how to set up a new line at the end of each file. I tried fixeol and an autocmd but not working :(
Thanks for all.
When are you going to fix so that the terminal cursor behaves in the same way as I have configured it outside neovim? I do not want a block cursor for my terminal :(
OK that's so cool
How do you handle running nvim inside the nvim terminal? (nested nvim) For example, you're in the nvim terminal, you ssh into another box, and start nvim there to edit a file. How the hell does one exit nvim there without quiting your local session?
I used to think I had to have tmux because of all this important imaginary things I was doing with it. Now I just fire it up if I have something that needs to be back there and just dump it to the back ground. I feel like everything is slightly more responsive outside of tmux. I setup my neovim terminal to behave like vscode and cmd-t opens, focus and the same toggles and hides it
Sounds nice, how did you do it?
@@FedericoDanielAnastasi-b9w I dont know how to share that here, ill try to paste the code maybe you can format it ... --- vscode like terminal ---
local terminal_buf = nil
local terminal_win = nil
local term_job_id = nil
local term_size = 5
vim.api.nvim_create_user_command("T", function()
-- If terminal buffer doesn't exist, create it, otherwise reuse it
if terminal_buf == nil or not vim.api.nvim_buf_is_valid(terminal_buf) then
-- vim.cmd("bel " .. term_size .. "split")
vim.cmd.vnew()
vim.cmd.term()
vim.cmd.wincmd("J")
vim.api.nvim_win_set_height(0, term_size)
terminal_buf = vim.api.nvim_get_current_buf()
terminal_win = vim.api.nvim_get_current_win()
temr_job_id = vim.bo.channel
vim.cmd("startinsert")
return
end
-- Terminal buffer exists, check if it's currently displayed
local wins = vim.api.nvim_list_wins()
local is_visible = false
for _, win in ipairs(wins) do
if vim.api.nvim_win_get_buf(win) == terminal_buf then
-- Terminal is visible, hide it
vim.api.nvim_win_hide(win)
is_visible = true
break
end
end
-- If terminal wasn't visible, show it
if not is_visible then
-- this makes smaller termial confined to one window pane
vim.cmd("bel " .. term_size .. "split")
-- this gives us a full horizontal window even when two panes are opened for more term realstate
-- vim.cmd.vnew()
-- vim.cmd.wincmd("J")
vim.api.nvim_win_set_height(0, term_size)
vim.api.nvim_win_set_buf(0, terminal_buf)
terminal_win = vim.api.nvim_get_current_win()
vim.cmd("startinsert")
end
end, {})
--- keymaps ---
local opts = { noremap = true, silent = true }
vim.keymap.set("t", "", [[]], opts)
vim.keymap.set({ "n" }, "", ":T", opts)
vim.keymap.set({ "i" }, "", ":T", opts)
vim.keymap.set("t", "", [[:T]], opts)
It actually says in the docs, at 7:37 , that sending an empty string sends a newline
I'm conflicted, this is cool and it resembles the other GUI code editors like VSCode, but it feels weird to have nested terminals... is there any disadvantages for using this over a native tab from my terminal emulator? like bugs, input delay, etc.
We want everything you know about nvim!
Floating windows is a great idea!
Is it possible to open an interpreter in the terminal and send selected text to it?
Is the way to setup neovim terminal for opening nested neovim (e.g. git commit called)? When I want to run command with ’:’ it runs on outer nvim
why do i not have vim logo beside where normal /insert is written
Holy how !! you tell me that there is a terminal inside texteditor based on terminal ???
Floating windows is coo coo cool 🙊
Thank you now I dont have to run zellij anymore
Floating windows next!
Hi @TJ, loving these videos. One of the things that is keeping me from switching to Neovim is, the lack of a Command Palette.
Sometimes I just want to execute a command on VScode, like for example, closing other open editors, or switching to a different project/workspace.
I don't need to define keymaps for those things, I just bring up palette, fuzzy search for the command and hit Enter.
Is there a way to create a similar experience using Neovim?
Telescope find_command will get you most of the way there
Have you seen the telescope and advanced telescope videos?
What is the undefined global?
is there any option, once i am in a term, lets say run make. have a keybind to jump to a error line on the code itself?
I would love to see floating windows.
I'm constantly using :!command
When I create those autocommand for TermOpen it removes line numbers even from file buffers
I figured out that it happens only when you spawn a pane from terminal pane
is there a way to somehow set what will be run everytime i do example??? It would be great when you start your workflow to set the compile command and have it easily accessed.
The github repository hasn' been updated...
i want a floating terminal 🚀
I used to think i was really smart for making basically almost hte exact same setup on my vim when i first started....
Maybe to get more content out of the floating windows make it be always the same term buffer? Not because I want to put that into my config and I'm too lazy to do it by myself... Not because of that at all...
Yo, is it possible to get the std out/error from a terminal buffer?
what do you mean? the compiler output?
Floating win please
Why don't you upload into Odysee anymore?
Why nvim take to long to open file
Or... tmux, I do like having it in a buffer though.
Yeah. Make a video about floating window.
Floating windows please
swwwweet
open floating window comment
If I would desire a terminal in my editor I would just use emacs. 😂