nvim) is a modern highly-refactored Vim with a 30% less codebase yet preserving Vim’s functionality. After installation, it is accessible by the
For me, a person not proficient with Vim editing modes, Neovim opened the gate to them. It has an interactive tutorial that lets learning by doing and not memorizing. Just type
:Tutor when you launch the editor and follow the exercises.
- Fully compatible with Vim’s editing model
- Backward compatible with Vimscript v1
- Highly extensible because of API-first approach
- Cursor styling, focus events, bracketed paste
- First-class Lua/LuaJIT scripting
And all the features you love in Vim.
is a command-line JSON processor written in C. It is like
sed for JSON. It allows to filter, map, and transform structured data with ease.
- Lightweight and flexible
- Single executable with zero dependencies
- Easy to use and fast
The most common use-case for me is formatting JSON output.
For further details refer to the official documentation .
poppler-utils is a collection of command-line utilities for manipulating PDF files. It is based on Poppler , a PDF rendering library.
I will only list those I use, for the whole list refer to
man pdfinfo ("SEE ALSO" section):
pdfinfo– list all information of a PDF
pdfimages– extract all embedded images at native resolution from a PDF
pdfseparate– extract single pages from a PDF (only allows to extract ranges, I will show you a better alternative)
pdftohtml– convert PDF to HTML (or XML) format retaining formatting, great for publishing on internet (HTML) or parsing a PDF (XML)
pdftoppm– convert a PDF page to a bitmap, allows to convert it to JPEG/PNG/etc
pdftotext– extract all text from PDF, great for indexing/searching
pdfunite– merge several PDF, very useful when you need to provide a list of documents in one file
ImageMagick is a command-line image manipulation suite. It includes a list of tools to resize, crop, flip and do other manipulations with bitmap images. It’s a swiss-knife for image manipulation. As a developer you are most likely familiar with its library.
Again, since it contains a lot of tools, I will list the ones I use (see
man imagemagick for the whole list):
convert– converts between image formats as well as resize an image, blur, crop, etc
identify– describes the format and characteristics of image files
convertbut overwrites the original image
composite– overlaps one image over another; very useful if you need to add a watermark or a background
montage– creates a composite image by combining several separate images, lets you create a collage
compare– shows the difference between images, useful to find image duplicates of different quality/sizes
exif shows EXIF information for JPEG files. EXIF information is a collection of metadata tags written to JPEG files by digital cameras/scanners. It contains camera settings information, location, date and time, image metrics, thumbnail, etc.
- list all tags (by default)
- show a specific tag with
- extract the thumbnail with
- create EXIF information with
- set the tag to the specified value with
exif --tag=TAG --set-value=VALUE
And many more. See
man exif for further information.
youtube-dl is the best tool to download videos from streaming services like Youtube, Vimeo, VK, Facebook, Instagram, and
. It requires Python of version
>=2.6 and it’s cross-platform. It is the most used tool for me on this list. I use it almost daily.
- download using proxy
- mark videos as watched (Youtube only)
- by-pass geo-restrictions using separate proxies and/or
- download playlists
- download using custom filters, for example: title, date of update, etc
- supports rate limiting
- allows choosing a preferable format
- supports authentication
For more features, refer to the documentaion . It is a download machine at the command-line which can cover most of your use-cases.
csvtool is a tool for performing manipulations on CSV files.
- extract columns by index or name
- print the number of rows in the file
- concatenate files or columns to a single file
- add a column to the file
I found it especially useful to re-order columns in a file on download when I have no control over a source.
ffmpeg is the only video/audio converter tool you need, very fast and flexible. It also can grab a live audio/video source and resize it on the fly. I’m not going to list all its features, because it can do almost everything with video. Just make sure you have it installed on your system and keep a list of useful snippets. Otherwise, you will have a hard time reading the man forever.
qpdf is a PDF transformation tool. Although it’s also using the Poppler library under the hood, it has some extra features compared to
- extract not sequential pages from a PDF, e.g.
qpdf --empty --pages input.pdf 3,5,6-10 -- output.pdf
- merge not sequntial pages from PDF files, e.g.
qpdf --empty --pages file1.pdf 1,6-8 file2.pdf 3,5 -- output.pdf
- remove password from a protected file
is a modern tool for finding entries in the filesystem. While it doesn’t support all of
find’s functionality, it comes with git-friendly defaults.
- ignores hidden files/directories by default
- ignores patterns from
- case-insensitive by default