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.
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
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.
@@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!
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
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.
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]
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?
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 :(
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'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.
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.
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.
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 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)
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.
Amazing series, thanks TJ!
thanks :) glad you're enjoying it!
Thanks for this series my dude, it has really reignited my love for neovim and I’m learning so much
These videos are so great. Thank you!
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!
I really like these videos.
Quality content
Thank you TJ!!!! SUPER CLEAR.
Nice videos , explanations are spot on vs trying to fill in the gaps when i listen to the prime 😂
Thank you. Please more! 😄
Another video I never knew I needed 🙌
I might have to switch from toggle term
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.
Damn it’s crazy to see how much you can do with neovim when you rtfm
Yes!! Floating windows video please, I'm learning how to use NVIM API this vacations
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
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!
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!
from now on i will call
as registered nurse instead of Carriage Return + Line Feed!
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
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!
pretty cool man, thank you
Thank you my dude :)
i just learned that nvim has a terminal, pretty cool to see more about this tbh
Im enjoing every second of this series ❤
Q: what's the nvim way of doing custom plugins per project ?
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
Bro has mastered the entire vim API, I envy
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
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.
I am enjoying this
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
TJ doesn't miss
floating window +1
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
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
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.
If you start a vim terminal and run emacs in it, does it tear the fabric of the space-time continuum?
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
This is what I use to run `emacs -nw` in case I need to edit text while I'm in Neovim
Wait, what? 🤣
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]
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?
why do i not have vim logo beside where normal /insert is written
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 :(
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'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.
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?
yes to the video on floating windows
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.
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.
Will you make a video about Debugging in go and different languages
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 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
yes. floating window please!! Thank you!
Woah i didn't know that 👍 thanks
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.
Yes please for floating window stuff.
Floating windows would be cool, may replace dependency on toggle term from my config
floating window floating window floating window
I want the toggely floating terminal window thing
OK that's so cool
I can't use neovim terminal because when it inevitably hangs and I have to restart neovim, then there's go all my terminals.
What used to drive me crazy about the nvim terminal was that it did not source my custom functiins.
Is it possible to open an interpreter in the terminal and send selected text to it?
Earlier used to get stuck in nvim inside the terminal, now I'm stuck in the terminal inside nvim 😢
Please make the float window video.
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?
What were you searching to find the documentation for all of the m
Vim methods like vim.api.
What is the undefined global?
make one on floating window where we can keep our backend server running
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
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)
I would like to see the toggling of floating windows
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...
Thank you now I dont have to run zellij anymore
Yo, is it possible to get the std out/error from a terminal buffer?
what do you mean? the compiler output?
Why nvim take to long to open file
Floating windows is coo coo cool 🙊
We want everything you know about nvim!
Floating windows is a great idea!
Not even acknowledging that :LspRestart tripped over itself. :) Sadly those little papercuts add up.
Holy how !! you tell me that there is a terminal inside texteditor based on terminal ???
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
swwwweet
I'm constantly using :!command
Or... tmux, I do like having it in a buffer though.
Why don't you upload into Odysee anymore?
i want a floating terminal 🚀
I would love to see floating windows.
The github repository hasn' been updated...
Floating windows next!
I used to think i was really smart for making basically almost hte exact same setup on my vim when i first started....
Yeah. Make a video about floating window.
Floating win please