19 ms·
Vim's 25th anniversary and the release of Vim 8
- ivanche 10y agoI just wonder whether in 2042 we'll read about 50th anniversary of this masterpiece!
- chengl 10y agoI hope we will
- 1001101 10y agoI hope so too! Don't forget: http://www.vim.org/sponsor/ http://www.vim.org/sponsor/ "Since Bram is back to a paid job the money will now (after March 2006) be used to help children in Uganda. This is the charity recommended by Vim's author. The money is used for a children centre in the south of Uganda, where AIDS has caused many victims. But at the same time donations increase Bram's motivation to keep working on Vim! "
- a3n 10y agoI hope I will.
- oneeyedpigeon 10y agoThe original vi will hit that milestone in 2026.
- adtac 10y agoI wonder if we'll see software this timeless ever again.
- oblio 10y agoWell, Visual Studio (via Visual C++) was launched 24 years ago, Photoshop is 26 years old, Word is 33 years old, Excel is 31 years old, Outlook is 23 years old, Total Commander is 23 years old, Eclipse and IntelliJ are 15 years old, etc. I think we're in an age where distribution of software is so wide that the market leaders, especially if they're Open Source, last for decades.
- kevin_b_er 10y agoYou might as well include vi then, which now makes this software product 41 years old.
- a-b 10y agoFun fact about vim: When vi was originally designed the most popular keyboard was ADM-3A and later IBM XT https://en.wikipedia.org/wiki/IBM_PC_keyboard#/media/File:IBM_Model_F_XT.png https://en.wikipedia.org/wiki/IBM_PC_keyboard#/media/File:IB... The layout of this keyboard has Control on the place where modern keyboards have a CapsLock key. Naturally that's why vi and vim was meant to use CTRL-[ to exit to the normal mode. 25 years later Apple introduced ToughBar and made ESC key virtual. As result remapped CapsLock-[ make sense again ;) edit: Add ADM-3A keyboard
- cseelus 10y agoActually I have remapped Caps-Lock to ESC and when pressed longer than a few ms to Ctrl system wide for years, with the Karabiner app. I read about that neat productivity boost that also reduces the strain on your left hand a lot in a blogpost which "sold" this idea as "this is how VIM was intended to work" and I really love it. Useful even for normal terminal combos like Ctrl+C. Only downside is, once you get used to it, you just can't go back ;-)
- tnorthcutt 10y agoSadly on macOS Sierra, you have to use Karabiner-Elements, which doesn't (yet, I hope) include support for long-press=ctrl.
- The_Hoff 10y agoIf you're fine giving up caps lock, Sierra makes it easy to remap caps lock to esc in Systems Preferences (it even disables the little green light on the key)
- toxik 10y agoWow, that's news to me! How I've waited for Apple to do this. Karabiner-Elements does some shady stuff with the kernel and in my experience makes the machine a lot less reliable.
- 10y ago
- robteix 10y agoIn the early 2000s, I was at a friend's place with John "maddog" Hall, who was talking to a group of us about the future of software and the promises of quantum computing. He said something that I always found interesting. He was talking about how in a decade or so we would probably be using software and tools that would be unrecognizable to us at that moment, but after a pause he added: "but we'll still be writing code with vi." :)
- innocentoldguy 10y agoSo, he was right about at least one thing then. :)
- bubblesocks 10y agoNot sure why you're getting down-voted. Development tools look pretty much the same as they did in 2000, languages all feel quite similar, and quantum computing still isn't ubiquitous. We are, indeed, still using Vim though, and quite happily, I might add.
- humanrebar 10y agoCI and deployment tools have matured a lot. I'd call them development tools.
- vkou 10y agoHaving used Windows, Linux, Visual Studio, Eclipse, and Perforce in both the early 2000s, and today, I'd daresay that they are quite recognizable. Much more usable (Except for Eclipse), but still quite recognizable.
- noir_lord 10y agoI'd agree with that. I actually can't think of a tool I use day to day that I wouldn't recognise from 20 years ago even the really good stuff would be obvious in it's intent (intellij etc). I'm not really sure where I'd be able to improve significantly on day to day tool usage, maybe a shell that doesn't use bash as the language would be nice (I know there are other shells but bash/dash are the defaults on pretty much everything I touch I can get to a command line on).
- a-b 10y agoVim is great, but hard out of box. That's why I'd like to mention couple community distributions to make it even better: • http://vim.spf13.com http://vim.spf13.com this distribution is remarkable! Extremely well documented vimrc file is a great source of knowlege by itself https://github.com/spf13/spf13-vim/blob/3.0/.vimrc https://github.com/spf13/spf13-vim/blob/3.0/.vimrc • https://github.com/carlhuda/janus https://github.com/carlhuda/janus Also, it worth to mention http://spacemacs.org http://spacemacs.org and https://neovim.io https://neovim.io
- adtac 10y agoI understand why someone would want to start with a prefilled vimrc, but I really can't stress enough how useful writing your own vimrc is. I started with bits and pieces from everywhere on the internet, but one day, I sat down and wrote my own vimrc. I realized I didn't even know 1/2^32th of the things that were possible with vim!
- a-b 10y agoThat's very true. On other hand based on my experience from San Francisco Vim meetup many beginners give up because of a steep vim learning curve at the beginning. It's better to start from something that already solves code editing problems and then customize it or even rewrite rc from scratch.
- DigitalJack 10y agoI used to customize vim quite a bit, but I got tired of trying to sync my config across multiple systems, some behind corporate firewalls. I run into this with TMUX too. It's a pain when you are used to your specific config to the point that it's hard to use the default config. I got into emacs when I started lisping, but vastly prefer vim's keyboarding and macros. So when spacemacs came about, I jumped on board and love it. The power of emacs and the sense of vim. Plus, I don't have to customize spacemacs aside from enabling modules I want... very easy to do. Very easy to keep in sync across multiple machines.
- 10y ago
- a-b 10y agoBest place to start vim journey http://vimcasts.org/episodes/page/7/ http://vimcasts.org/episodes/page/7/
- hackermailman 10y agoCMU also has a pretty good guide/list here: https://www.cs.cmu.edu/~15131/f16/topics/vim/ https://www.cs.cmu.edu/~15131/f16/topics/vim/ Links this great stackexchange post 'Your problem with Vim is you don't grok vi' (Vim as a language) http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118 http://stackoverflow.com/questions/1218390/what-is-your-most...
- MichaelGG 10y agoI'm rather a fan of Vim Adventures. It's cool enough even my 8 yr old daughter wanted to learn Vim to play.
- smhenderson 10y agoCongratulations Bram! 22 years ago I installed my first GNU/Linux distro and tried both emacs^ and Vim. I ended up liking Vim better and I've been using it ever since. ^ no disrespect to emacs though, it is also a great and venerable program!
- innocentoldguy 10y agoI started using Vim on the very first release of Slackware, back in 1993, I think. I've been using it ever since. Thanks Bram!!!
- smhenderson 10y agoCool, the first distro I mentioned in my post was Slackware, in 1995. It came on cdrom with a book I picked up at the time. I think it took me a couple of months of using it to realize the vi I was using was elvis, a clone that Patrick shipped with Slackware by default. After reading about Vim and Bram I realized I had to install Vim separately. I'm back to Slackware these days after moving away from Debian because, well there were reasons. Interestingly when I read this article this morning I realized that true to form Slackware is still using 7.4 so I downloaded the source and am compiling 8 this evening after work. Thanks Bram indeed! :-)
- bubblesocks 10y agoMy first distro was Slackware, and I bought it in 1995 as well. Mine came with a Unix book from O'Reilly. The only thing I remember about the book was a quote at the top of one of the chapters, "Dyslexics of the world, untie!" I too used elvis for quite a while, until someone at the bank I worked for at the time introduced me to Vim. I've never met Bram, but I always feel a depth of appreciation when I see his name pop up in the editor window.
- a-b 10y agoRanked list of vim plugins http://vimawesome.com http://vimawesome.com
- CaliforniaKarl 10y agoI use Vim 8 (via MacVim) every day, but I'm definitely not at an advanced level! I'd say the most advanced stuff I do is gqap, and performing substitutions via regex, either with a range or in visual mode. I'd appreciate suggestions as to the best path to take, to move to a more advanced level of Vim 8. (Note I mention Vim 8 explicitly. Also, if extending my existing vimrc becomes a thing to do, I'd want to do it myself, learning what each not does!)
- innocentoldguy 10y agoI used to use MacVim all the time, and have a healthy respect for the project. Might I also recommend a NeoVim/tmux combination? Personally, I can't think of a better development environment (unless you're coding in Java, but then you have bigger, sadder problems to deal with :) ).
- bubblesocks 10y agoI found this book quite helpful in leveling up my Vim skills: https://pragprog.com/book/dnvim2/practical-vim-second-edition https://pragprog.com/book/dnvim2/practical-vim-second-editio... I can also vouch for the Vim + tmux combination. PragProg has an excellent book on tmux too: https://pragprog.com/book/bhtmux2/tmux-2 https://pragprog.com/book/bhtmux2/tmux-2
- _nato_ 10y agoLong-time vi[m] user, and always learning/amazement. This very morning I learned about the `-c` flag. So, `vim -c "set spell" my-misspelled-file.txt` starts up vim with a given setting.
- unfamiliar 10y agoThat seems like more keystrokes than just entering "set spell" after it launches.
- jmcdiesel 10y agoI love VIM... but I feel like VIM's life is coming to an end... as VIM. NeoVIM is just... better. The editor as it stands now is essentially the same, but an actual active development that isn's a single contributor is going to create a better project, and its going to respond to the community more and keep itself more up to date and performant. I feel bad, in a way, because i have a strong loyalty to vim, but Bram's stubbornness at playing well with others is basically holding onto sand, and we know how that analogy goes...
- massysett 10y ago"actual active development that isn's a single contributor is going to create a better project" Depends on what your definition of "better" is. If you just want stable software that's bug free, multiple contributors might actually make the software worse. A lot of people use vim in a way such that Neovim will be no improvement. Neovim could become like the next zsh. I use zsh every day and have for years. I think it's "better". But for most people bash is good enough so they use it. The things that are better in zsh are not things they care about, so they will not bother switching.
- jay-anderson 10y agoI'd be okay with that result (bash : zsh :: vim : neovim). Whatever the result I think vi(m) users are winning in the end. One side benefit of neovim existing is a push for vim to get similar feature and step up their development efforts. One difference I see with this comparison is neovim's goal: `feature-parity and backwards compatibility are high priorities`. If they succeed in this then there'd be little downside to switching.
- shortlived 10y agoI will agree once neovim ships on the major platforms and has functions on par with vim. Their next milestone for Windows support has continued to slip. It's been at 75% complete for many months. Meanwhile, gVim is running great on numerous platforms. It's not a knock against neovim, but I just hope they can keep things going.
- jmcdiesel 10y agoI don't see why he felt the need to halfway add in package management, but not go all the way. You still have to download the package and update it manually from what i can tell... where the others you simply add a github path (or other repository path) and updates come eaily, install comes easily. Consider the case of people like me who work on remote servers, who spin up new vagrant boxes and work on them remote... with the package manager as he described it, i'd have to download all the plugins and manually place them, etc... as i currently stand, i install vundle really quickly , then it just reads my .vundlerc.bundles and installs all the plugins i want, presto. Half solutions are worse than no solutions... because now people will compare the two, and default (likely) to the default solution and make package management harder on themselves than it needs to be...
- hellcow 10y agoI don't understand your concern. It seems to me to be roughly the same amount of work whether you A) install vundle and maintain a list of plugins for it to fetch or B) write a bash script that fetches each plugin. I actually prefer Vim 8's approach.
- jmcdiesel 10y agoBecause i can install vundle with a single line in my setup script (already have a "provisioning" kinda script for each time i fire off a machine). I dont have to update that script for new plugins, its a single "Vundle user/repo" in the vundle.rc file. Vundle then installs it, and handles it. Could it be scripted, sure... but its much more readable in the vundle form (or other managers for vim), and its also in a more logical place... and its portable, even to a windows machine... its kinda a separation of concerns kinda thing...
- hellcow 10y ago> I dont have to update that script for new plugins, its a single "Vundle user/repo" in the vundle.rc file. You either add a single line to your vundle.rc file, or you add a single line to your bash script.
- YeGoblynQueenne 10y agoVimscript now has lambdas and closures! Also: https://github.com/idanarye/vim-smile https://github.com/idanarye/vim-smile Vim now has a ":smile" command :D
- bubblesocks 10y agoI just picked up this book on writing Vim plugins and scripts: https://pragprog.com/book/bkviml/the-viml-primer https://pragprog.com/book/bkviml/the-viml-primer It has been good so far.
- 99183091 10y agoNo one outside a couple of hipsters on HN gives a damn about NeoVIM. It is always amusing how disconnected from reality some people here are.
- jmcdiesel 10y agohttps://github.com/vim/vim https://github.com/vim/vim https://github.com/neovim/neovim https://github.com/neovim/neovim The numbers tend to disagree with you. Unless you think that only hacker news users are on git... Given VIM is bundled with OSes, i would never expect neovim to take it place in usage numbers (unless OSes start adopting neovim as well)... but when it comes to actual interest, in just about every measurable aspect, neovim is coming out on top of developers who actually know about it. Most devs I work with use it (if they use vim at all), I've seen it more than VIM lately at conferences as well. You give up nothing using it an gain a bit (and will gain much more as its further developed) [removed reflexive jab at poster]
- 10239801 10y agoYou sound like a mediocre programmer who uses "social coding", other people's projects and GitHub as a substitute for competence.
- nilved 10y agoVim hasn't been on GitHub as long as Neovim. Check out the mailing list, Reddit, basically anywhere but HN or GitHub. Neovim is a drop in the bucket. And since Vim has taken all the best features from Neovim (in less time -- Neovim hasn't released version 1 despite being crowd-funded for several years) this is really a Node-and-io.js situation. Vim is going to absorb Neovim.
- Keyframe 10y agoThis is one case where it feels a lot longer than that! I've used jot as primary editor on SGI and emacs sometimes and always when on Sun machines. Vi was always something I wasn't all that comfortable with. Then came about amiga where I've encountered Vim and thought to hell with it, why not. Ever since I've used Vim more and more and emacs less and less. In the meantime I've stopped programming as a full time job and I think in the last 8 years or so I've moved completely from emacs to Vim. With plugins I really don't see working any other way on longer things. For smaller, scratch type of crap I tend to dwell into sublime and experimenting with VSCode, but Vim is just, well, it's an editing experience. Fells like it has been around forever, probably due to vi.
- shmerl 10y ago> User demand for a multi-threaded Vim (e.g. a patch for supporting multiple threads) and its rejection is what prompted the Neovim fork in January 2014. In his presentation, Moolenaar concedes that Neovim did create some pressure to add a way to handle asynchronous jobs. I switched to neovim a while ago, because it supported 24-bit color themes in the terminal. Since then it seems even regular vim picked it up too. It's good to see that some pressure moved the project forward in different areas which were stuck forever before. Though neovim already uses XDG base directory specification, but vim still doesn't.
- zer0t3ch 10y ago> Though neovim already uses XDG base directory specification, but vim still doesn't Aaaaand now I want to switch to neovim.
- mkingston 10y agoIt's pretty effortless to switch. For me, I found: .vimrc was compatible (but lives in .config/nvim/init.vim). Plugins were compatible (in fact, YouCompleteMe worked better). There was a little bit of faff setting up symlinks. In case you use Arch, it offers a package neovim-symlinks that handles that for you.
- zer0t3ch 10y agoGood to know, thanks.
- a-b 10y agoI'm wondering how many folks are using g& command ;) It works great considering that :s//new_pattern/g will search for last /old_pattern
- 6ftdan 10y agoYay! I've been using this for quite some time now. I build from the master branch on VIM's git repo for custom plugin support. There was a moment it had issues with the FishShell before this official release but that's fixed now. I've also built this into a remote programming Docker image: https://hub.docker.com/r/danielpclark/ruby-pair/ https://hub.docker.com/r/danielpclark/ruby-pair/