12 ms·
Vim Galore: everything you need to know about Vim
- yakshaving_jgt 5y agoI can’t recommend enough the book Practical Vim by Drew Neil. Vim isn’t hard, and it’s faster than everything else. Vim is the one true editor (except for that other one true editor which is also ok).
- edgyquant 5y agoI still use vim quite a bit, especially because I live in the terminal, but the last few years I’ve been converted to VSCode for my IDE. I still live in the terminal just within VSCode.
- synergy20 5y agobought and used many IDEs (still owns all jetbrains stuff) but 99% of the time I'm using vim for everything. it does have a learning curve and took a while to settle down all those key bindings with plugins. once you past that point, it never stands in the way, and I don't need move my fingers away from the keyboard to pick the mouse and click here and there then move my hands back to keyboard anymore.
- iamcreasy 5y agoIs Vim with plugin still as good when you have to switch between multiple languages with good debugging support? or some languages/plugins are better supported than other?
- ngngngng 5y agoI mostly use copilot and the most popular LSP for any language I'm developing. And I mostly write Go and Python. Any mature, popular language will have plenty of tooling and plugins for you to work with, but not all tooling is created equal. For me, everything works much better in Go than in Python. Copilot suggestions are far more useful, the LSP has a lot more useful info to give me, etc. There are a couple "flavors" of neovim that do a lot of the heavy lifting for you as far as plugin setup to give you a better initial setup experience, otherwise you will need to put in some work to finding all the plugins you want, and some of that work will need to be repeated for each language you want to write.
- shroompasta 5y agoVim, to me, has been unproductive. I spent about 4 months on it daily unable to get up to speed how I was originally. This may just speak to my own inabilities of muscle memory, and granted, If I used Vim a little younger, I think the outcome would be different. But the thing is, I'm productive enough. Furthermore, I found the mouse to be faster in many cases - I only believe the top 10% of vim users who have spent countless hours tailoring their config to be the most "productive" in terms of typing. I say productive in terms of typing, because when we code, a grand majority of our productivity actually comes from our brain. Squeezing out additional wpm actually has very little relevance to productivity. But looking at seasoned Vim users looks cool though, and it definitely does give those style points.
- deleted 5y ago[deleted]
- threatofrain 5y agoI've used Vim for many years and I don't recommend people learn it. The things which make Vim strong (cross-platform, plugin ecosystem) has been subsumed by VSC for the most part, and what is left is Vim's unique philosophy of text editing, which by itself is an incredibly modest proposition.
- peakaboo 5y agoSoftware like VS Code lives in cycles. It's popular now but you will see it being less popular every year. People will notice how it grows slower, buggier, and probably some unpopular decisions by Microsoft will annoy users. This is the default path for big software. Vim will always be there and because it's not backed by big tech, it will continue to be modular, fast and modern. Much like Linux, learning it means you are free, powerful and you will not get affected by the whims of big tech. This is very valuable. Every year you use free software, you invest time in skills that won't go away and will support you for life.
- aidos 5y agoYup, that's also why I decided to get good in vim. I was pretty happy in TextMate at the time, but the popularity tide had turned as he was working on TextMate2. The writing appeared to be on the wall, so I learnt vim properly. Sublime took over, then came Atom, now VSCode. Neovim is home for me now, and that's been a whole other beast to configure, but vim has just been such a stable, efficient environment for me for almost 15 years now.
- ilovecaching 5y agoVim is still one of the best IDEs out there, and I do mean IDE. I have git, gdb, terminal, and LSP integration. I've got spell check. I've got tags, cscope, snippets, and lint warnings. I've got documentation and hover support. On top of that, my editor uses megabytes instead of gigabytes of RAM, and I can run it from any terminal, on any computer. I can run it on my iPad Pro using blink. I can run it over mosh or ssh. I've been able to use it at every job I've ever worked at even as workplaces have switched from Sublime to Atom to VS Code. It doesn't cost me a dime to use it. I've been writing C, Go, Rust while working on bootloaders, kernel patches, and firmware for years and years and Vim has been a powerful tool to keep me as productive as possible. Even after trying CLion, VSCode, Atom, etc. I always come back to Vim realizing that these sluggish GUI Java/Javascript apps simply don't offer enough to compare to the decades of work that has gone into Vim. Vim and Emacs are an investment, but the investment pays off ten fold. On top of their powerful features you get to support free and open source software that isn't being steered by corporations that want to keep you locked in and collect as much analytical data on your habits as possible. They aren't looking to lock you into an editor as a service. We've seen with neovim that the system works and has made both vim and neovim even better through healthy competition. Free and open source for the tools you use everyday is the way to go.
- asicsp 5y ago>I have git, gdb, terminal, and LSP integration. I've got spell check. I've got tags, cscope, snippets, and lint warnings. Apart from the built-in features (like :terminal), somehow I haven't yet explored plugins to enhance my Vim usage. Granted that coding projects over 100 lines are rare for me, I still feel like I should try them out and see if I can get used to them. If not pure coding projects, at least for things like markdown, having a preview could help.
- mrzool 5y ago> If not pure coding projects, at least for things like markdown, having a preview could help. You can use a dedicated app alongside Vim for that. On macOS, Marked2[1] is pretty great. [1]: https://marked2app.com https://marked2app.com
- deleted 5y ago[deleted]
- davidkunz 5y agoFor those interested in what modern Neovim has to offer, check out my playlist: https://youtube.com/playlist?list=PLu-ydI-PCl0OEG0ZEqLRRuCrMJGAAI0tW https://youtube.com/playlist?list=PLu-ydI-PCl0OEG0ZEqLRRuCrM...
- peakaboo 5y agoI see you are a man of culture. And I really like the lightspeed plugin you have in your playlist there. So effective navigation. I also use neovim session plugins which is great when having several projects.
- davidkunz 5y agoThanks, peakaboo! Session plugins seem like a nice idea, gonna check that out!
- Tau_Cygna_V 5y agoBeen watching your videos for some time. Great content!
- davidkunz 5y agoHi Tau, thank you very much, glad to hear!
- ImprovedSilence 5y agoI stumbled across your vids a few months ago after I decided to checkout neovim & try for the full "vim as an IDE" experience. They are defiantly some of the most helpful videos I came across, great work!
- davidkunz 5y agoThanks a lot, ImprovedSilence, I'm glad that they are helpful!
- uvdn7 5y agoWhat I like about vim (and other terminal editors alike) the most is the predictability. For any decent tools, you will get used to them over time, things become muscle memories; and that’s good. You learn it once, and you can benefit from it for a looong time. You know how the tool works, you know how to use it, and it won’t change by itself. Remember that feeling when your favorite desktop app, website release a new upgrade and it just stop making sense to you? Or it’s unclear how things work anymore? That’s what I am talking about.
- Shared404 5y agoIt seems worth noting that this is mostly a culture difference. Many terminal users will be upset if you change a tool out from under them. Many desktop users don't know how to vocalize it. In addition, it's more common afaict for cli/tui tools to be open source, so if someone does change a tool out from under you it's possible to fork the old version and keep the UI you like.
- Koshkin 5y ago> predictability... muscle memories A huge issue with this for me is that it is practically impossible to confine myself to the universe where only vim keybindings exist.
- mplanchard 5y agoI was always a heavy vim user, and I’ve had a good time switching to doom emacs: it seems easier to do more stuff outside of code editing in emacs, and I’ve got full vim keybindings in pretty much anything I can get emacs to do. I even have a browser plug-in that opens an emacs editing session for any text input on a page!
- deleted 5y ago[deleted]
- GregBuchholz 5y agoHere are some of the things I use to increase the range of programs for which I can use vi keybindings: * vscodevim extension for Vscode * "set -o vi" in Bash * Vim Vixen plugin for Firefox * you can use ctrl-alt-j in gdb. And that might (should?) work in other programs which use GNU Readline to get vi keybindings. The only thing I miss with the vi bindings in bash/readline is "ge/gE" from vim (move backwards to the end of the word).
- CalChris 5y agoMy setup is neovim + VSCode + VSCode Neovim + clangd with which I am extremely happy. I am otherwise a vanilla vim user.
- city41 5y agoThat's also my setup. I find VSCode Neovim can get out of sync at times. The fix seems to be to close the document and re-open it. Not knocking the plugin, it has to be quite the task to get the integration working perfectly. But yeah, overall it's an excellent combo.
- dharmaturtle 5y agoI have this out-of-sync issue as well. I was previously blaming it on a Clojure plugin (Calva), but I'm guessing you don't have that. Wish I could reliably recreate - it happens once or twice a day.
- kristiandupont 5y agoI tried out vscode-neovim at one point but switched back to vscodevim. I don't actually remember what the problems were but I do remember thinking that vscodevim was the lesser evil. It's pretty hard when coming from regular vim, but I live with it. But maybe things have changed?
- CalChris 5y agoPost 0.5 neovim, vscode-neovim is great, well for me it is. But there were three problems. Command mode sucked but it's much better now. If I could close the results window with an escape character, that'd be just great. If you navigate right with the space bar, it screws up the line. Right arrow works fine. However, I think this is a VSC problem. :e! fixes the problem. If you do any editing immediately after opening, it just inserts your keystrokes at the beginning. It would be better to buffer or ignore them. I also think this is a VSC problem. :e! fixes the problem. I only added clangd very recently. It obviates You Complete Me, ctags and much of clang-tidy. It refactors. It's an awesome code navigator. https://clangd.llvm.org/features https://clangd.llvm.org/features I still use neovim from the command line occasionally. But since they've fixed command mode, that's less and less.
- chapium 5y agoVim movement is amazing. However, I've never seen any great benefits to learning more advanced features of the application, it's just too much to think about.
- randomdrake 5y agoMaybe you don’t yet grok vi. https://stackoverflow.com/a/1220118 https://stackoverflow.com/a/1220118
- metrix 5y agoIt depends on how much you use it. Being able to open multiple files, visually diff from a VCS, and find/replace in all open buffers is quite handy if you're in the CLI quite a lot
- buscoquadnary 5y agoI was in the same boat then I switched to Doom Emacs it has all the VIM keybindings but a lot of the emacs power and it covered a lot of the places that VIM was lacking before I now find it one of the best prodcutivity decisions I've made in a long time. Plus once you figure out org mode and magit you can't imagine living life without them. (Also as a humrous aside I just tried finishing this post by typing :wq! because of force of habit, I love vim)
- krono 5y agoThose benefits only became apparent after about a week of forcing myself to use them + some minor tweaks. Can't say it made me any faster or more efficient, but it sure does feel satisfying and more comfortable. And, let's be honest, it also makes me look cool!
- rackjack 5y agoVim is very big, so don't learn it until you need it. For example, if you want to draw diagrams in Vim, you could certainly just add all the spaces and such yourself, or you could use `virtualedit=block` and vim will add the spaces for you. But you'd never know about the option beforehand because you didn't need it before.
- deleted 5y ago
- lvass 5y agoY behavior is the most baffling, disgusting, characteristic of any text editor ever. This page really should instruct users to remap to y$.
- bokchoi 5y agoyay for neovim mapping Y to y$ by default. https://neovim.io/doc/user/vim_diff.html#default-mappings https://neovim.io/doc/user/vim_diff.html#default-mappings
- jah 5y agoThis mapping is the new default in Neovim 0.6 (https://github.com/neovim/neovim/commit/5a111c1b02bbfbc2b42df11d7205153be0893dff https://github.com/neovim/neovim/commit/5a111c1b02bbfbc2b42d...)
- wolverine876 5y agoFrom Vim help: > If you like "Y" to work from the cursor to the end of line (which is more logical, but not Vi-compatible) use ":map Y y$".
- takladev 5y agoThis is great. Just a simple 100 page document on how to use a editor/IDE. No wonder I have been using it for 20 years. I tried shifting to VScode but was frustrated deleting the :wq! keys all the time, so I had to jump back to VIM. Product teams a learn a thing or two from VIM on how to make your product sticky.
- barrenko 5y agoYup, it's a great cult like product.
- sha016 5y agoI've used vim/vi for years and learned a couple new things in the first few paragraphs. Thanks for sharing
- boring_twenties 5y agoAre people still using actual vim? I am, because I'm old. But what's the story with NeoVim, should I be considering switching to that?
- mempko 5y agoI also use vim not neovim. I don't like the neovim culture and money grab. I think the founders misrepresented the origin story. But neovim does have some nice features. But not enough for me to switch and vim is being improved at a rapid pace. Still team vim.
- leephillips 5y agoMoney grab?
- leephillips 5y agoPlenty of people still use Vim; probably more than use Neovim (just a guess). Now that Vim has asynchronous plugins and terminals, there won't be much difference for you unless you want to write your own plugins or elaborate configurations: you can do that in Lua with Neovim, which is much saner than using Vimscript. The only other reason might be if you want to use a plugin that’s not available in Vim.
- lawn 5y agoI've used Neovim since it first came to and there are good reasons to try it out: - Native Lua support. While you don't have to rewrite your config in Lua, it's a big boon for plugin writers. - A very active community, fueled by.Lua being so much nicer than vimscript. - Native LSP support. Granted, you can get similar features from plugins such as coc, but the native integration in Neovim feels a lot more integrated and extendable. - Treesitter support. Fast and more detailed syntax highlighting is nice, but you can also do more contextual transformations like swap functions or function parameters regardless of formating.
- sodapopcan 5y agoI have considered using neovim but still haven't made the switch. I really wish there weren't the two options yet here we are. One hand, while I very much respect that Bram can do what he want (and he's done so much for everyone), it's still pretty lame how it all went down that led neovim to come into existence. But ya, I dunno, I still just use vim. I also actually like vimscript—Sure, it's 100% Stockholm Syndrome, but still.
- tombert 5y agoWhat made Vim click for me, and it's sort of a cliché, is Vimtutor. I went through the entire `vimtutor` on the command line, and all of a sudden the "dogma" behind Vim clicked. Vim keystrokes have been my default for so long that I find myself pressing Caps Lock or Escape basically everywhere.
- anyfactor 5y agoI really can't operate without caps lock as escape. That is one of the reason I am apprehensive about setting a leader key(space) because getting used to that will make me incompatible with everyone else's machine.
- tombert 5y agoI've never really understood everyone's hate for using backslash for the leader key. It's easily reachable with my pinky finger without much hand contortion. I agree with your point though; part of the reason I'm always apprehensive about redefining keys is because I'm never 100% sure whose keyboard I'm going to be typing on (though that's less of an issue now cuz of COVID).
- yakshaving_jgt 5y agoWhen I was first learning (and consequently perving on everyone else’s vimrcs), I noticed a meme where many people use comma for leader. I followed suit but later learned from Practical Vim that this is a bad idea because comma already has an important function. (Discovering what that function is and why it’s important is left as an exercise for the reader).
- yakshaving_jgt 5y ago> will make me incompatible with everyone else's machine. Any time someone says this, I think of [this comment][0]. [0]: https://www.reddit.com/r/vim/comments/2c3cuu/a_quick_tour_of_steve_loshs_massive_vimrc/cjc4jnj/?utm_source=share&utm_medium=ios_app&utm_name=iossmf&context=3 https://www.reddit.com/r/vim/comments/2c3cuu/a_quick_tour_of...
- throwaway238947 5y agoI use vim as my IDE daily, and swear by it. I was just thinking of things that I still 'shell out' for because it feels more convenient and wanted to get other people's opinion on how they solve it. 1) Open a file (in a split) in the same git repo that shows up under 'git status'. I'm way too comfortable hitting ctrl-z, git s, grab mouse, copy, fg, :sp ctrl<v>. Is there a simple pattern/plugin to just list modified files and open one in a split? 2) Open a file in another repo. So I'm in src/foo, and I need to open a file (in a split) in src/bar. I often use NerdTree for this but it feels slow and cumbersome, but maybe I'm using nerdtree wrong? Something like being able to just type <leader><key> <start typing a path and get fzf-style results> or something like that. 3) Find where a function/method is defined in the current git repo. Right now my pattern is I have Ack search (but using fzf) bound to backslash, so I type like \'def funcname' but this feels so cumbersome. Is there a faster way to just say "open the file where the function name my cursor is in is defined"? For reference, in the shell I tend to rely heavily on fzf and fzf-using functions (e.g. 'vis' will let me select from changed files via fzf and open it in vim, 'vif' will let me select from any filename under the current dir in vim) and I guess I'm mostly looking for bringing that power and flexibility into vim without shelling out or lots of arrow-arrow-return-arrow-arrow-return in nerdtree.
- sodapopcan 5y ago1) I just use fugitive[0] for that. `git status` in vim is now just the `:G`, command, though I map it to `gs` so it's even quicker. 2) I can't really help you there, at least not in vanilla vim. I make heavy use of tmux and never work on my more than one repo in the same vim instance, nor is my vim's current working directory every anything other than the root of the repo I'm in. So if I do need to open a file in another repo and want to see two repos side-by-side (which is rare but it happens), I make a tmux split. 3) gutentags [1] can help with this. Though nothing is better than using a language server for your given language. That said, I still just have gutentags and mostly just grep/search for `def func` like you currently do. [0] https://github.com/tpope/vim-fugitive https://github.com/tpope/vim-fugitive [1] https://github.com/ludovicchabant/vim-gutentags https://github.com/ludovicchabant/vim-gutentags
- blobdon 5y ago
- ljosifov 5y agoNice, and improvement on frequent "vim for beginners" texts. One vi(m) text that takes things further is "The Vi/Ex Editor" by Walter Alan Zintz (originally published in UnixWorld Online), atm at https://www.ele.uri.edu/faculty/vetter/Other-stuff/vi/009-index.html https://www.ele.uri.edu/faculty/vetter/Other-stuff/vi/009-in.... Love the intro, heart warming indeed :-) https://www.ele.uri.edu/faculty/vetter/Other-stuff/vi/009.part1.html#heartwarming https://www.ele.uri.edu/faculty/vetter/Other-stuff/vi/009.pa.... A rich repository of related material is e.g. https://blog.sanctum.geek.nz/series/unix-as-ide/ https://blog.sanctum.geek.nz/series/unix-as-ide/.
- gorgoiler 5y agoAn important conclusion I once came to, which I am sure many others have found out for themselves: while an IDE may help you edit code, and vim may work well for you as an IDE, vim’s core competency is much more fundamental: it is as a text editor. One is most likely to conclude this when using an IDE and wanting to juggle some prose in a comment. What would have been so simple in vim is a little bit harder in your Monaco based editor. A happy environment is one where vim is never far away, no matter what you are working on.
- deleted 5y ago[deleted]
- shuntress 5y agoI just can't find a way to get myself to the point where I feel like I prefer vim over VS Code. For making changes in a single small file, vim is good enough and I enjoy using it. But any time I find myself dealing with bigger changes and multiple or big files (Stuff that is more "Project" scope rather than "Code" scope, if that makes sense) I always feel like I want to be using VS Code instead.
- w0m 5y agovim will ~never have a better debugging experience than VS Code (or any proper IDE) I think; and That's OK. Each tool has it's own uses. I'm a Vim fanboy; but i still do any non-trivial (local) change in Vim. If i have to dev on a build server; local(tmux) Vim vs remote-ssh VSCode it becomes closer.
- shiryel 5y agoFor those that are whiling to learn vim, I recommend to not install a lot of plugins when you are still learning, you will probably just forget them and it will probably have side effects on your configuration! But as basic plugins that will provide a great quality of life, I shall recommend those: Global Search: fzf Syntax Highlight: nvim-treesitter LSP: nvim-lspconfig or coc Dir Nav: nerdtree Git: vim-fugitive
- yakshaving_jgt 5y agoI wouldn’t recommend nerdtree. It’s good at what it does, but what it does is not a thing that people should do. Finding files is much faster with a fuzzy file finder, and displaying the file tree (which I think people typically need way less often) can be done by backgrounding the vim process to drop to the shell, running `tree`, and foregrounding again.