Note: this assumes that each student also has a current Vim instance, as well as the CoVim plugin, installed on their system. If they don't, the Docker file can also be used as a recipe for building and installing Vim and CoVim on each student's workstation.
1) (as root) Create a working folder and cd into it.
mkdir work && cd work
2) Inside of the work folder, create a Dockerfile containing the following:
MAINTAINER Tim Kramer <firstname.lastname@example.org>
# Date: 04 Feb 2017
# This Dockerfile will install build the current
# version of Vim, and then install the covim plugin
# make sure source image is up-to-date
RUN touch /deleteme
RUN apt-get update && apt-get upgrade -y
# build and install the current version of Vim
RUN apt-get install -y bash python-pip git libssl-dev libncurses5-dev supervisor
RUN pip install twisted argparse service_identity
RUN git clone git://github.com/vim/vim
RUN cd /vim && ./configure --enable-pythoninterp=dynamic
RUN cd /vim && make && make install
# build and install the covim plugin
RUN mkdir ~/.vim && mkdir ~/.vim/bundle
RUN cd ~/.vim/bundle && git clone git://github.com/FredKSchott/CoVim.git
RUN mv ~/.vim/bundle/CoVim/plugin ~/.vim/
RUN cp ~/.vim/plugin/CoVimServer.py /bin/
# add the supervisor config file
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
3) Inside of the work folder, create a file called "supervisord.conf", containing the following:
command=/bin/bash -c "exec /bin/CoVimServer.py -p"
4) Create the Docker image by running the following (inside of the working folder):
docker build -t pg/covim .
5) Create a container from the image by running:
docker run --name covim -itd -p 8555:8555 pg/covim
6) (As a user) Connect to the service by running Vim and running the following command:
:CoVim connect IPADDR 8555 USERNAME
In the above, edit "IPADDR" and "USERNAME" to fit. Note: If vim is being run on the same machine as the CoVim service then IPADDR must be "localhost". It's also assumed that each student has a different username.
IMPORTANT: All editing is done in memory. If each user wants a copy of the edited file, each must issue a save command (e.g., ":w myfilename") before exiting. By default, the saved file will show up in whatever directory the user was in when they executed Vim.
- Install the client end on a machine reachable via ShellInABox (or similar SSH client). This removes the need to install CoVim on each student's workstation. All they'll need is a browser. Possible drawback: when the student saves a file, it is stored on the machine running ShellInABox, not the student's machine.
- In the student's .bashrc file, add the following line:
alias covim="vim -c 'CoVim connect IPADDR 8555 $(whoami)'"
- The user must exit twice when leaving the program. The first ":q" or ":q!" disconnects from the service. The second exits the Vim program.