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
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!
At work I have 9 console apps to run. I automated running them with vim terminal mode. I wrote a script that does it automatically. It's very easy figure out how to do it using docs. You can start/stop and restart, term mode also preserves history, so you can go to app, checkout it out and restart it by just pressing up.
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
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…
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
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.
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 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)
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?
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.
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?
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...
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 :(
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.
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
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!
Thank you TJ!!!! SUPER CLEAR.
Nice videos , explanations are spot on vs trying to fill in the gaps when i listen to the prime 😂
Another video I never knew I needed 🙌
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.
Thank you. Please more! 😄
Yes!! Floating windows video please, I'm learning how to use NVIM API this vacations
Thank you my dude :)
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!
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
Damn it’s crazy to see how much you can do with neovim when you rtfm
pretty cool man, thank you
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 might have to switch from toggle term
i just learned that nvim has a terminal, pretty cool to see more about this tbh
Bro has mastered the entire vim API, I envy
At work I have 9 console apps to run. I automated running them with vim terminal mode. I wrote a script that does it automatically. It's very easy figure out how to do it using docs. You can start/stop and restart, term mode also preserves history, so you can go to app, checkout it out and restart it by just pressing up.
Would like to see a floating window tutorial! Specifically for a terminal or file tree!
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
Im enjoing every second of this series ❤
Q: what's the nvim way of doing custom plugins per project ?
TJ doesn't miss
I am enjoying this
from now on i will call
as registered nurse instead of Carriage Return + Line Feed!
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
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
yes. floating window please!! Thank you!
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
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…
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.
This is what I use to run `emacs -nw` in case I need to edit text while I'm in Neovim
Wait, what? 🤣
floating window +1
Woah i didn't know that 👍 thanks
floating window floating window floating window
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
OK that's so cool
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]
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.
Yes please for floating window stuff.
Floating windows would be cool, may replace dependency on toggle term from my config
I want the toggely floating terminal window thing
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.
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.
once pr/issue with native image protocol in neovim terminal is merged i will fully transition my setup
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.
floating windows will be cool.
I'd also be interested to know what process you go through to write a plugin?
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)
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?
It actually says in the docs, at 7:37 , that sending an empty string sends a newline
Will you make a video about Debugging in go and different languages
remember to update your notes TJ!
Thank you now I dont have to run zellij anymore
I can't use neovim terminal because when it inevitably hangs and I have to restart neovim, then there's go all my terminals.
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.
Floating windows is coo coo cool 🙊
We want everything you know about nvim!
Not even acknowledging that :LspRestart tripped over itself. :) Sadly those little papercuts add up.
Earlier used to get stuck in nvim inside the terminal, now I'm stuck in the terminal inside nvim 😢
Floating windows next!
Floating windows is a great idea!
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
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.
swwwweet
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?
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.
why do i not have vim logo beside where normal /insert is written
Please make the float window video.
If you start a vim terminal and run emacs in it, does it tear the fabric of the space-time continuum?
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
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
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...
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 :(
make one on floating window where we can keep our backend server running
Holy how !! you tell me that there is a terminal inside texteditor based on terminal ???
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?
Is it possible to open an interpreter in the terminal and send selected text to it?
i want a floating terminal 🚀
I would like to see the toggling of floating windows
I would love to see floating windows.
What is the undefined global?
I used to think i was really smart for making basically almost hte exact same setup on my vim when i first started....
Why nvim take to long to open file
Yo, is it possible to get the std out/error from a terminal buffer?
what do you mean? the compiler output?
I'm constantly using :!command
Or... tmux, I do like having it in a buffer though.
so I can have live reload, by remapping :w?
your videos are so helpful, thank you man!
Why don't you upload into Odysee anymore?
The github repository hasn' been updated...
Yeah. Make a video about floating window.
i to get back into terminal and it's \ not /
this is what i got caught on if someone else is looking for the comment how to get back in
Floating win please