Floating toggle-able terminal in Neovim in 50 lines of Lua

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ม.ค. 2025

ความคิดเห็น • 143

  • @Ezio2848
    @Ezio2848 26 วันที่ผ่านมา +14

    Thanks for the great video!
    For those you want to avoid pressing `i` when entering the floating terminal you can add this line to the `toggle_terminal` function `vim.cmd("normal i")` like in here:
    ```
    local toggle_terminal = function()
    if not vim.api.nvim_win_is_valid(state.floating.win) then
    state.floating = create_floating_window { buffer = state.floating.buffer }
    if vim.bo[state.floating.buffer].buftype ~= 'terminal' then
    vim.cmd.terminal()
    end
    else
    vim.api.nvim_win_hide(state.floating.win)
    end
    vim.cmd('normal i')
    end
    ```

    • @taylorjohnsonct
      @taylorjohnsonct 20 วันที่ผ่านมา

      Amazing, thank you

    • @diggus88
      @diggus88 9 วันที่ผ่านมา

      That's really neat how it works off the difference between how a :normal command is treated in a regular buffer and a terminal buffer. At first I was totally confused why it wasn't dumping me into normal mode when switching back to the regular file buffer.

  • @ankushroy1729
    @ankushroy1729 หลายเดือนก่อน +17

    Thank you very much Teej! I've been using nvim without knowing a lot of things for such a long time. All these recent videos helped me a lot!

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +3

      So glad to hear you're liking it and enjoying it

  • @ChristopherSalisburySalz
    @ChristopherSalisburySalz หลายเดือนก่อน +25

    Pure wizardy! I watch these more to be impressed than to learn because there are too many gaps in my neovim knowledge and you go super duper fast.

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +3

      haha thanks for all the comments :) and glad you are enjoying the videos

  • @CNich90
    @CNich90 29 วันที่ผ่านมา +1

    This may be the most exciting video of the series! It’s mind boggling how simple this was with such a powerful result. Endless possibilities 🎉. Thanks man!

  • @Massive-Skill-Issues
    @Massive-Skill-Issues 29 วันที่ผ่านมา +3

    I`m now a fellow Floaterminal enjoyer! And I have tons of ideas what I want to float next. I love these kinds of videos, thank you!

  • @thoughtlesslabs
    @thoughtlesslabs หลายเดือนก่อน +4

    Amazing video teej and thank you so much for helping bring light to a very important cause! 😊

  • @krantinebhwani6125
    @krantinebhwani6125 หลายเดือนก่อน +3

    always learn a lot from you, appreciate it, as much as a i like hacking away at difficult problems when it comes to config i always feel like theres a wall in my way before diving in so ive always use default neovim + a few settings. But seeing how you do it makes it feel a lot less "icky" for a lack of a better word, and you're so smooth with all this. thanks buddy

  • @jeffbit8620
    @jeffbit8620 หลายเดือนก่อน +28

    Just an idea. Maybe a video about your setup. Like color scheme on neovim, terminal you use, window manager etc. For people that are curious. Also love the videos, learn a lot. Thanks.

    • @mr.sloth.
      @mr.sloth. หลายเดือนก่อน +16

      Don't forget to say which editor you use, btw.

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +5

      ya, maybe in the new year, but it's not very exciting stuff haha

    • @jeffbit8620
      @jeffbit8620 หลายเดือนก่อน

      I understand. Can I still ask what your neovim color scheme is though? I typed the telescope lua out and it formatted it out right except the find files part isn’t colored.

    • @itztlacoliuhqui
      @itztlacoliuhqui หลายเดือนก่อน

      ​@@jeffbit8620 that looks like tokyonight

    • @raymondkemboi1349
      @raymondkemboi1349 หลายเดือนก่อน

      @@jeffbit8620It looks like tokyonight

  • @timdithmer9184
    @timdithmer9184 หลายเดือนก่อน +4

    Dang bruh, more videos than I can consume. love it. 😍

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +2

      hahaha i am tryin!

  • @lmnts556
    @lmnts556 24 วันที่ผ่านมา +1

    This is really cool, it makes everything more approachable. Thnks.

  • @rossvold
    @rossvold หลายเดือนก่อน +6

    This nvim series is a banger.

  • @Kane0123
    @Kane0123 หลายเดือนก่อน +5

    Teej's comment section is getting hit hard - bros making good content!

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      haha what do you mean?

  • @committedcoder3352
    @committedcoder3352 หลายเดือนก่อน +8

    Good video. This gives me some ideas, like having easily accessible "scratch" buffers for different languages, e.g. a scratch buffer for python, js, latex, or md/plain text with an option to render/run? Seems like a fun challenge :)

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      that's the best part! you can make it just the way you like for you!

  • @callmetyler
    @callmetyler หลายเดือนก่อน +6

    Amazing resource for getting started with plugin development! Can’t wait to see what else we build in this series!

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      thanks :) ya, we'll start doing a bit more exploring as we go on in the series!

  • @jUr3t
    @jUr3t หลายเดือนก่อน

    Loving these videos. The rest of the family have chocolate advent calendars but I have Advent of Neovim. This is sooooo much better and healthier :D

  • @examinethose
    @examinethose หลายเดือนก่อน +2

    my gippity defaulted to rounded borders, you made it a fan

  • @Windeycastle
    @Windeycastle หลายเดือนก่อน +2

    That's so good! Thanks for sharing.

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      my pleasure!

  • @cristobaljvp
    @cristobaljvp หลายเดือนก่อน

    damn i am feeling like i am gonna take my neovim config to the next level with this videos, i hope there is more coming, thanks for the video!

  • @Anes_
    @Anes_ 29 วันที่ผ่านมา

    i just learned vim motions and i'm loving it, don't think i need somthing like neovim. But i love watching you customizing the hell out of it XD

  • @GGDiegoNeira
    @GGDiegoNeira หลายเดือนก่อน +2

    Your content is GOLD!! ❤

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      your comments are gold!! ;)

  • @danielfernandes1010
    @danielfernandes1010 หลายเดือนก่อน

    Your series has been so inspiring to me! Earlier today I decided to start making a "Recent sessions" feature. Trying to replicate the "Open recent folder" menu in other editors.
    My plan is to save session files of my projects into a common directory, and then pick a session using telescope file_files on that common dir.
    But telescope's find_files would open the session file as a buffer, so I'm trying to figure out how to source it instead.

  • @DeepanshuJain21
    @DeepanshuJain21 หลายเดือนก่อน +5

    You make nvim more fun for me 😄

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      awe, thank you! that's a really nice compliment!

  • @danporter2453
    @danporter2453 หลายเดือนก่อน +1

    This was helpful. I hope all the big money flowing in from the sponsors isn't going to affect the great content.

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      hahaha yes, adopt a reply guy truly going to bring in the big bucks

    • @thoughtlesslabs
      @thoughtlesslabs หลายเดือนก่อน

      the good people at adopt a reply guy would never exert creative control

  • @yasirjanjua4978
    @yasirjanjua4978 หลายเดือนก่อน

    I am literally clinged to this series. There is so much to learn. Thanks a lot for that TJ.
    Looking forward to the AI integration into neovim with project context sharing.

  • @disguisedpigeon5465
    @disguisedpigeon5465 หลายเดือนก่อน +3

    8:40 I wouldn't set it to terminal mode because of the small delay when pressing , maybe tt on normal and on terminal. Just my opinion though.

    • @sebascoding
      @sebascoding หลายเดือนก่อน

      As long as the next word doesn't start with `tt` (not that common at least in english), you can keep writing, don't need to wait after the ``

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      ya, super reasonable.

  • @marcusshep
    @marcusshep หลายเดือนก่อน

    I absolutely LOVE these videos

  • @TheSismeon
    @TheSismeon หลายเดือนก่อน +1

    I'm so grateful for this advent of neovim, TJ! Your kickstart.nvim already got me to make the final move to neovim on something that felt stable but not overwhelming, and this series is just showing how easy and not scary at all it is to implement this sort of thing and make the editor truly mine. Thank you for your work!

  • @bassamsaleh8034
    @bassamsaleh8034 หลายเดือนก่อน

    Amazing content-please keep it coming!

  • @HaridasNykiel
    @HaridasNykiel 13 วันที่ผ่านมา

    This is a great one, learnt alot.

  • @davidsicilia5316
    @davidsicilia5316 28 วันที่ผ่านมา

    love these nvim lua videos

  • @lializ_666
    @lializ_666 3 วันที่ผ่านมา

    In case anyone had the same problem with the fuzzy match, you can go to the source (or inside opts in the lazy request) and make force-version="v0.10.0"
    or to the lastest release of the future, i dunno, search

  • @ChristopherSalisburySalz
    @ChristopherSalisburySalz หลายเดือนก่อน +1

    I have spent a LONG time learning vim motions and neovim. And I realize how very little I know when zi watch your videos.

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      hahaha thank you! i appreciate :)

  • @keyboard-slayer
    @keyboard-slayer หลายเดือนก่อน +2

    OK, now I'm in love with neovim. Thanks TJ!

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      same ;)

  • @tigranrostomyan9231
    @tigranrostomyan9231 หลายเดือนก่อน +2

    this is so good

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      appreciate it :)

  • @eflinjh
    @eflinjh หลายเดือนก่อน +1

    Your videos are great as always but HOLY MOLY this hoody is GOLD

  • @cz7259
    @cz7259 หลายเดือนก่อน +1

    Nice, I have been floating vim fugitive, and it became 10 times easier to use.

    • @Blackweirdo
      @Blackweirdo 26 วันที่ผ่านมา

      Such a great idea!

  • @DrOptix
    @DrOptix หลายเดือนก่อน +1

    This looks interesting. The first time I heard about the neovim terminal was 2 or 3 videos ago. It's tempting to integrate it into my workflow.
    But somehow it's hard to fit it in the current tmux workflow I use. I don't know. maybe it will be helpful for one off commands.

  • @anurag9385
    @anurag9385 14 วันที่ผ่านมา +1

    how do i open file from the terminal inside nvim?

  • @gueyenono
    @gueyenono หลายเดือนก่อน

    I highly recommend your retitle your videos by prefixing them with Advent of Neovim Day 1...25. In this season, I am very sure it will bring in many more views.

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      in general, i've found putting the series title tanks the views haha but i appreciate the suggestion. they are all on a playlist though!

  • @markuslanggeng
    @markuslanggeng หลายเดือนก่อน

    I usually just use ctrl-z or spaan another terminal, but this is interesting too

  • @cacup7
    @cacup7 หลายเดือนก่อน +1

    I loved this trick ❤

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      thank you haha

  • @jamesbarrow
    @jamesbarrow หลายเดือนก่อน +1

    I also saw the other terminal video in the Advent of Neovim series, and I didn't realize I had to enter insert mode to be able to start using it. Took me a while.
    So I now have this in the scripts for the terminals so it automatically enters insert mode inside the terminal buffer after showing the window.
    vim.api.nvim_command('startinsert')

    • @matheusmoraes8157
      @matheusmoraes8157 หลายเดือนก่อน

      Could you share it?

    • @jamesbarrow
      @jamesbarrow หลายเดือนก่อน

      @@matheusmoraes8157 see the last line in my original comment. Add that after the line which opens the window.

  • @hyperthreaded
    @hyperthreaded 29 วันที่ผ่านมา

    7:25 why does vim.cmd.terimal() know in which buffer to create the terminal, but the vim.bo.buftype thing in the line above it needs to be told the buffer id?

    • @jasonschannel
      @jasonschannel 20 วันที่ผ่านมา

      if i were to guess it's because `terminal` cmd makes a terminal instance in the active buffer. (which would be the buffer we just set in `create_floating_window > nvim_open_win`). However there isn't a cmd (I don't think) to get the buftype of the active buffer so we must look it up in `vim.bo`.

  • @riko_2048
    @riko_2048 หลายเดือนก่อน

    love it👌

  • @nahuellescano
    @nahuellescano หลายเดือนก่อน

    Man, your tutorials are awesome! It's a shame you don't have a transparent terminal with a waifu background image, but it's okay. You are gold.

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      my waifu is real 3d girl - so instead i just use default awesomewm desktop background LOL

  • @Halahamante
    @Halahamante หลายเดือนก่อน

    From now on every single new plugin has a floating window

  • @puneetdhiman5194
    @puneetdhiman5194 หลายเดือนก่อน +1

    Can you explain about make command. And how to like jump from errors from terminal to error location

  • @lotfi5404
    @lotfi5404 หลายเดือนก่อน +1

    First of all thank you for these very informative videos . I have a question please what is your settings / layout of the status bar i rlly like how simplistic it is

  • @robcmills
    @robcmills หลายเดือนก่อน

    Long time fan of your content. It's fantastic.
    I saw that you are starting to integrate LLM's into your dev flow. They are super useful, eh?
    I've been using vim for over ten years, and switched to neovim a few years ago. I'm super deep into my config and I love it, but
    I've recently started using Cursor, because it takes AI assisted coding to the next level. I'm curious what your thoughts are regarding this and the future of ai-assisted coding in neovim.

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      haha a bit too long of thoughts to write in a comment, but I have tried cursor to get a good opinion of it. I think LLMs can be quite helpful (or very harmful haha depends on the day). Maybe I will make something with a larger conglomeration of my thoughts in the new year

  • @oru8612
    @oru8612 หลายเดือนก่อน

    Can anyone help me with this: I want the terminal to open in the directory of the file I am working on and then automatically run commands when I press the keymap that runs floaterminal.

  • @fat_32
    @fat_32 วันที่ผ่านมา

    Help : Can't get it to work once I place it inside lua/plugins

  • @hadeedji
    @hadeedji หลายเดือนก่อน +1

    Great video
    So far we've been using existing plugins, what is the thought process behind doing terminal from scratch rather than using one of the many plugins, thanks!

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      terminal from scratch takes like 50 lines, writing a custom autocompletion plugin takes a few thousand haha

  • @radvilardian
    @radvilardian หลายเดือนก่อน +1

    HOW AM I SUPPOSED TO RTFM IF WE HAVE THIS PLAYLIST BETTER. WOWW TEEJ, YOU'RE ON FIRE AND THANKS FOR EVERYTHING !!! ❤‍🔥❤‍🔥❤‍🔥

  • @karan_hiremath
    @karan_hiremath หลายเดือนก่อน +1

    This but it lets me attach to any tmux window/pane would be *chefs kiss* for my workflow!!!!
    Guess it’s good I’m on vacation I got time to figure out how tf to make that shit work!!!!

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      ya, sorry - i don't use tmux so i can't really help ya with this one

  • @LinuxEssentials79
    @LinuxEssentials79 24 วันที่ผ่านมา

    Hey, bro amazing content, thank you so much! Although when I start neovim, then press " space + tt " to raise floaterminal, well if I exit " Ctrl + d " then an empty floating window remains. Therefore I have to press " space +tt " again to hide it. However, this happens only the first time after open nvim.

  • @shivamamin1126
    @shivamamin1126 หลายเดือนก่อน

    Ohh Yeee!!! 💜

  • @sh_zik
    @sh_zik หลายเดือนก่อน +1

    TJ, can you update git repo, please?

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      yup! just pushed an update - sorry for forgetting to do that haha

    • @Windeycastle
      @Windeycastle หลายเดือนก่อน

      @@teej_dv Thanks!

  • @adrianscarlett
    @adrianscarlett หลายเดือนก่อน +3

    Mines called flerminal.

    • @bugloper
      @bugloper หลายเดือนก่อน

      Mine is called floaminal

  • @Michaeljamieson10
    @Michaeljamieson10 14 วันที่ผ่านมา

    floating window!

  • @carlosdelgadoramos9948
    @carlosdelgadoramos9948 หลายเดือนก่อน

    Hey what font are you using?

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      berkeley mono

  • @henryallenlaudemilk5161
    @henryallenlaudemilk5161 หลายเดือนก่อน +1

    Why not just use toggleterm?

    • @Ninjafire300
      @Ninjafire300 หลายเดือนก่อน

      because you don't have vim motions in toogleterm, i often struggle for yanking text in toggle term

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +2

      i don't see why i would need a plugin for something i can write in 50ish lines (and then customize more for exactly how i want to use it, never breaks, never changes unless i do, etc)

  • @stefanvanbiljon8657
    @stefanvanbiljon8657 หลายเดือนก่อน

    Anyone know what font tj is using?

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      berkeley mono

    • @stefanvanbiljon8657
      @stefanvanbiljon8657 หลายเดือนก่อน

      @teej_dv Thank you! Amazing video as always

  • @ChristopherSalisburySalz
    @ChristopherSalisburySalz หลายเดือนก่อน

    Why a semi colon for your prompt? Im sure you have some smart reason why.

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      you can copy it and the command will run :)

    • @LinuxEssentials79
      @LinuxEssentials79 24 วันที่ผ่านมา +1

      I believe this is the starship cross-shell prompt or some kind of prompt customization. 😉

  • @sidgabriell
    @sidgabriell หลายเดือนก่อน

    Floating terminal is working but I get this message when I open neovim:
    Invalid spec module: `plugins.floaterminal`
    Expected a `table` of specs, but a `nil` was returned instead
    Anyone can help me?

    • @csam9170
      @csam9170 หลายเดือนก่อน

      Maybe you put it in your lazy plugins directory instead of the root level ‘plugin’ dir
      And lazy is expecting your module to return a table, but this one returns nothing but sets a keymap in the end

    • @sidgabriell
      @sidgabriell หลายเดือนก่อน

      @@csam9170 I tried this too but same happen, but I'll check again asap, thanks :)

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      You don't want it in nvim/lua/config/plugins, but instead just nvim/plugin

    • @sidgabriell
      @sidgabriell หลายเดือนก่อน

      @@teej_dv Thanks teej, I'll check tomorrow at work, thanks for the videos and greetings from Brazil

    • @sidgabriell
      @sidgabriell หลายเดือนก่อน

      @@teej_dv Working great, I think I had some issues with my dotfiles sync app, tnaks again!

  • @Xdavidel
    @Xdavidel หลายเดือนก่อน

    Isn't vim.print(_) the same as print(vim.inspect(_))?

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      ya, old habits die hard though haha

  • @ByronPendason
    @ByronPendason หลายเดือนก่อน

    Is there a setting out maybe an easy autocommand that can set up that whenever you enter a terminal buffer in Neovim it automatically goes into insert mode? It would be an awesome quality of life upgrade. Lol.

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +2

      Yup! It's in the help for :terminal btw ;)
      autocmd TermOpen * startinsert

    • @ForeverZer0
      @ForeverZer0 หลายเดือนก่อน +2

      There is multiple ways to do it, but in the `toggle_window` function, directly under the "if ...end " expression that calls `vim.cmd.term()`, add the line `vim.cmd("startinsert")`.
      This will make it enter insert mode automatically every time the window is shown.

    • @ByronPendason
      @ByronPendason หลายเดือนก่อน

      @@teej_dv Awesome! Thank you so much!

  • @donaldwilliams6821
    @donaldwilliams6821 หลายเดือนก่อน

    Can you post this code? Your notes git repo doesn't have it. Also at the top you have "Package Mgr" below you call it "Plugin Mgr" Thanks

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      Just updated the git repo, thanks for the reminder!

    • @donaldwilliams6821
      @donaldwilliams6821 หลายเดือนก่อน

      @@teej_dv Thanks but the floating terminal code still isn't there.

  • @matheusmoraes8157
    @matheusmoraes8157 หลายเดือนก่อน

    Where is the code?

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      sorry, it's updated here now github.com/tjdevries/advent-of-nvim

  • @yayahc
    @yayahc หลายเดือนก่อน +1

    I just got buf buf buf buf buf

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      buf buf buf buf

  • @Michael-rh8vy
    @Michael-rh8vy หลายเดือนก่อน

    Based

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      based

  • @tecchie-z
    @tecchie-z หลายเดือนก่อน

    Or just use floaterm

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      sure - but this is like almost no code and teaches you a lot of things. it's ok to take time to learn!

  • @Hooksie1
    @Hooksie1 หลายเดือนก่อน +5

    Not bad, but I think floater is a better name

    • @teej_dv
      @teej_dv  หลายเดือนก่อน +1

      hahah i ain't doin that

  • @NicolasJoye
    @NicolasJoye หลายเดือนก่อน

    Floaterm is hilar...😂

  • @m4saurabh
    @m4saurabh หลายเดือนก่อน +2

    First

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      first reply

  • @disguisedpigeon5465
    @disguisedpigeon5465 หลายเดือนก่อน +1

    One comment in one minute. Dead channel

    • @disguisedpigeon5465
      @disguisedpigeon5465 หลายเดือนก่อน +2

      He ain't know how to post videos in order. Oil vid mentions this one. 😭

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      HAHA i forgot that I mentioned it here.

  • @zlavankorps8165
    @zlavankorps8165 หลายเดือนก่อน

    nice

    • @teej_dv
      @teej_dv  หลายเดือนก่อน

      nice

  • @blacksundarkskies
    @blacksundarkskies หลายเดือนก่อน

    vim-floaterm is been around for 5 years