The vim-client command-line tools vim-client-edit, vim-client-diff and the Python module vim_client will allow you to connect to a Vim server and make it:
- Edit files or directories in new tabs,
- Compare files (similar to vimdiff),
- Evaluate expressions and return their result,
- Send commands to Vim.
It will allow you, for example, to make Vim edit or diff files from outside of Vim (e.g. from a shell like Bash, Zsh, etc.).
License
Copyright (C) 2022-2026 James Cherti.
Distributed under terms of the MIT license.
Requirements
- Python >= 3.0
- The Vim editor (‘vim’ or ‘gvim’ in $PATH. Vim must be compiled with |+clientserver|, which is the case of most Vim distributions, because the Python module vim_client uses command-line arguments
vim --remote-*)
Installation
sudo pip install vim-client
The ‘vim-client-*’ command-line tools
Edit a file in the current window/tab:
vim-client-edit file1
Edit multiple files/directories in separate tabs:
vim-client-edit --tab file1 file2 file3
Edit multiple files/directories in stacked horizontal splits:
vim-client-edit --split file1 file2
Edit multiple files/directories in side-by-side vertical splits (To open vertical splits on the right of the current window, use the Vim option set splitright):
vim-client-edit --vsplit file1 file2
Edit and compare up to eight files in a new tab:
vim-client-diff --tab file1 file2
Recommendations
Add aliases to ~/.bashrc
It is recommended to add the following aliases to your ~/.bashrc:
alias gvim='vim-client-edit --tab'
alias vim='vim-client-edit --tab'
alias vi='vim-client-edit --tab'
alias vimdiff='vim-client-diff --tab'
Start diff mode with vertical splits (vim-client-diff)
Add the following line to your ~/.vimrc:
set diffopt+=vertical
Create desktop launchers
File: /usr/local/share/applications/vim-client-edit.desktop
[Desktop Entry]
Name=vim-client-edit
GenericName=Vim Client Edit
Comment=Vim Client Edit
Exec=vim-client-edit --tab %F
Terminal=false
Type=Application
Keywords=Text;editor;
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
File: /usr/local/share/applications/vim-client-diff.desktop
[Desktop Entry]
Name=vim-client-diff
GenericName=Vim Client Diff
Comment=Vim Client Diff
Exec=vim-client-diff --tab %F
Terminal=false
Type=Application
Keywords=Text;editor;
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Links
Related posts:
- Vim theme: tomorrow-night-deepblue, a refreshing color scheme with a deep blue background
- Vim: Open documentation in a new tab for the word under the cursor (Vim help, Python, man pages, Markdown, Ansible…)
- Bash shell: Interactive Menu to Insert any String from the Tmux Scrollback Buffer Into the Shell Prompt
- Python: How to clear stdin before using the input() function
- Linux: Setting the default GDM login monitor in a multi-monitor setup using GNOME display settings
- Master the HJKL navigation with the Vim plugin Hjklmode, which can help breaking the habit of moving the right hand away from the home row
- Vim: Enhance Vim tabs (file name only, file status, and the ability to rename tabs)
- Bash shell: A better version of the default bash built-in command “cd”
- Vim script: Replace the home directory with a tilde ~
- A Vim function that returns all monospaced fonts (UNIX / Linux only)
- Arch Linux: Preserving the kernel modules of the currently running kernel during and after an upgrade
- Pathaction, a universal Makefile for your entire filesystem: Run rule-driven commands on any file or directory
- bash-stdops – A collection of useful Bash Shell Scripts
- A Vim plugin for persisting and restoring Vim editing sessions
- 13 Useful GNOME Shell Extensions for a Better Desktop Experience (Available in the official Debian repositories or on the GNOME Extensions website for other distributions)
- Enhancing Git configuration ~/.gitconfig for performance, efficiency, data integrity, and workflow automation
- Gentoo Linux: Printer driver for the Brother QL-1110NWB
- jc-dotfiles – A collection of configuration files for UNIX/Linux systems
- Lightvim – The Efficient Minimal Vim/Neovim Configuration
- A Shell Script that Automates XFCE Desktop Configuration