Better Encryption in Vim

Using Vim as a password manager seems to be popular, but the built-in encryption options are limited. If you look at :help 'cryptmethod' you'll see options for zip and blowfish, with zip as the default.

Stephen Braithwaite asked on the Vim development list if AES support was desired:

I am a programmer, and would like to add AES to available encryptions, which currently is mostly only blowfish. Would such an addition be welcome? Would such a patch contributed by me be acceptable? Or are there good reasons why Vim should have only blowfish, and the original encryption available in Vim which is known to be broken, and whose name I have forgotten?

Read More →

Use Vinegar with NERDTree

I use Tim Pope's vinegar.vim, which shows a file list whenever - is pressed. I don't use project drawers anymore, and for some background on why you should check out Oil and vinegar - split windows and the project drawer.

If you agree with that article, but still like the way NERDTree handles files, you could compromise with Dhruva Sagar's fork of vinegar.vim. This triggers NERDTree whenever - is pressed instead of the built-in netrw.

I found this fork in Why does NerdTree exist? What's wrong with netrw? on reddit, where Dhruva said:

Read More →

Script Roundup: vim-heroku, heroku-remote, heroku-binstubs

vim-heroku

vim-heroku (GitHub: tpope/vim-heroku, License: Vim) by Tim Pope is a Heroku Toolbelt wrapper. It provides a :Hk command that wraps around the Toolbelt but also hk.

hk is a faster Heroku command-line client, which is by Heroku but is unsupported and has to be installed from source. It's written with Go and supports zsh and bash completion.

That means if you've got hk and vim-heroku, you can get tab completion in Vim as well.

Read More →

Treed

I don't know if Vim-inspired aesthetics is a thing, but some people are definitely console fetishists. Ideas from Vim and text-based UIs make their way into web software, and a great example of this is Treed (GitHub: jaredly / treed, License: Apache 2.0) by Jared Forsyth.

Treed

Treed is a "tree editing" component. By using some of Vim's keyboard shortcuts, you can navigate and edit trees, and the results can be rendered in real time using D3.js.

Read More →

TimL

When I showed TimL to people they asked me if it was a joke, so it's not surprising that Tim Pope has actually put a section in the readme called "Is this a joke?"

If you mean the 6,000 lines of working code, then no, I poured hundreds upon hundreds of very serious hours into that. But if you're referring to the fact it's woefully underdocumented, adds considerable overhead to an already slow host platform, and ultimately unlikely to gain any traction, then yeah, probably.

TimL is a Lisp implementation that transpiles to VimL. If you know anything about Lisp then you might already appreciate that it's technically relatively simple to parse. However, TimL isn't just any old Lisp, it's somewhat Clojure inspired:

Read More →

Script Roundup: angular.vim, clone

Angular.vim

Angular.vim (GitHub: burnettk / vim-angular, License: Vim) by Kevin Burnett is a set of shortcuts for working with AngularJS projects. Features include switching between test and implementation files (:A), goto file tweaks (gf), and spec runners.

Clone

Clone by Ingo Karkat adds a :CloneAs command for copying the current buffer to a new file.

It keeps the current buffer intact and unmodified, and you can clone part of a file with a range as well (:[range]CloneAs). It also supports cloning into a split window (:[range]SCloneAs).

Read More →

Vertical Movement with vim-columnmove

A reader who was also a fan of Patternjump sent in vim-columnmove, which is by the same author. This is a plugin that helps make vertical movement more convenient by providing vertical equivalents of motions like f and t.

For example, columnmove-f (mapped to <M-f>) will move the cursor down along the current column to the next matching character.

There's also columnmove-w which is for word-wise movement, where "words" are the characters in the current column. I find this harder to visualise, so I've only really used columnmove-f.

Read More →

Kakoune

Kakoune

Kakoune by Maxime Coste is a Vim-inspired editor that focuses on incremental editing using selections:

Kakoune works on selections, which are oriented, inclusive range of characters, selections have an anchor and a cursor character. Most commands move both of them, except when extending selection where the anchor character stays fixed and the cursor one moves around.

It's a C++/Boost project with ncurses and support for Linux, Mac OS, and Windows with Cygwin.

Read More →

Script Roundup: github-issues.vim

The github-issues.vim (GitHub: jaxbot / github-issues.vim, License: MIT) by Jonathan Warner allows you to look up GitHub issues using Vim. That means the next time you're writing a commit and want to reference a ticket, you can get completion based on issue numbers.

GitHub issues

Typing :Gissues will show the issues for the current repository. If you want to use it with private repositories, then you'll need to set your API access token using let g:github_access_token. Tokens can be obtained from /settings/tokens/new on GitHub.

Read More →

Folding a vimrc

vimrc with folding

Something that surprises people when they see my .vimrc is the fact I use folding to keep it tidy. Because it's a Vim-specific file, I don't mind having a modeline at the top that ensures folding is enabled by default: " vim:fdm=marker. This sets foldmethod to foldmarker so comments can define folds:

" Mouse {{{
set ttyfast
set ttymouse=xterm2
set mouse=a
" }}}

My .vimrc is 109 lines, which I think is way too long, but even if it was shorter I'd probably still use folds to organise it.

Read More →