Inspiration
We liked coding together for the multitude of projects in Gaucho Racing. However, collaborating on text editors such as Vim was too difficult. Not only that, VSCode has live share so we wanted to bring collaboration to Vim.
What it does
Vim-with-Friends allows multiple users to edit a single text document using ssh. It allows most of the utility of vim such as moving around, inserting, saving, and much more, with the added bonus of Collaboration!!
How we built it
Lots of stress and pulling our hair out. We used the POSIX shared memory objects to setup a back end with the host server (which is also a client, but maintains FS read/write abilities while other clients do not) and a simplistic ncurses based front-end. It is completely built in C++.
Challenges we ran into
Sleep deprivation definitely made noticing small bugs harder, but with consistent effort we overcame. We also had to learn the various libraries we used (shm_open, mmap, ncurses) from near-scratch. Not only that, this was also our first Hack and many of our members first times making such a big project, so figuring out how to divide work and how to integrate our work together were both quite challenging.
Accomplishments that we're proud of
We finished within 20 hours, and we are a group of first time hackers so we are especially proud. We managed to implement a good chunk of VIM functionality and had time to polish different aspects of it. While not a perfect copy of VIM, it works pretty dang well, much better than we original could have hoped for.
What we learned
We learned lots of git and grit, as well as integration and memory management (and any sleep is better than none). We also learned how to tackle giant projects with the power of friendship, which is why you need VIM-with-Friends!
What's next for Vim-with-Friends
There are several features that we will continue to work on. Including making smoother scroll back, enabling larger files, allowing more people to work together, optimizing for less lag, allowing different modes, and maybe even allowing customization and plugins.
Built With
- c++
- ncurses

Log in or sign up for Devpost to join the conversation.