ovid-vim
ovid-vim copied to clipboard
Ovid's lousy vim setup
NAME
ovid-vim - Ovid's Vim Setup
SYNOPSIS
git clone [email protected]:Ovid/ovid-vim.git
ln -s ovid-vim/.vimrc ~/.vimrc
ln -s ovid-vim/.vim ~/.vim
# copy bin/ files to your path
DESCRIPTION
People keep asking me for my vim setup, so I've cleaned it up a bit and am posting it here. It's sort of old-school because I never switch to a package manager. I also don't claim that it's a brilliant example of vim usage. It just reflects how I used vim. Because I'm almost always hacking on Perl, it's very Perl-specific in many ways.
I never documented this code properly because no one else was every using it. I also DO NOT CLAIM THIS IS SUITABLE FOR ANYONE ELSE. You've been warned. It's only here because people ask for it. Also, note that some things I've told people about are not here because I need to clean up my code even more. This also means that some things may not work as expected because I did so much cleanup.
FILES TO READ
You probably would be most interested in:
.vimrc.vim/filetype.vim.vim/ftplugin/perl.vim
MAPPINGS
I've set my leader to the comma. The comma is actually a command in vim:
, Repeat latest f, t, F or T in opposite direction
[count] times.
I don't use that command, so it works for me. Your mileage may vary. You can
change your leader by resetting it at the top of the .vimrc file.
Basics
When in Perl, typing K when on a module name or keyword will attempt to
launch perldoc with the appropriate documentation.
Common commands I use:
| Command | Description |
|---|---|
| ,w | Jump to the next window |
| ,h | Turn off highlighting |
| ,pp | Toggle paste mode |
| ,ls | List current directory contents |
| ,la | List current directory contents, including hidden files |
| tab | (visual mode) indent selected lines |
| shift tab | (visual mode) unindent selected lines |
git
My embarrassing git integration is a legacy from years ago when I used CVS, then switched to Subversion, and now use git. I should learn to use fugitive.
| Command | Description |
|---|---|
| ,ca | git annotate current file |
| ,cl | git log current file |
| ,cr | git review current file |
| ,cd | git commit current file (you cannot commit without a review) |
| ,c1 | find first commit in repo with the current |
The following are in the git section because they use git internally.
| Command | Description |
|---|---|
| ,g | Prompt for a search term and search your lib/ directory for it. |
| ,G | Same as ,g, but also search your t/ directory. |
| ,f | Same as ,g, but search for whatever <cword> your cursor is on. |
Vim
When you edit yoru .vimrc file, we automatically pick up the changes with:
au! BufWritePost .vimrc source %
| Command | Description |
|---|---|
| ,v | Source your .vimrc |
| ,V | Edit your .vimrc |
Perl
The following non-core modules are required by some helper scripts:
- App::Ack
- Data::Dumper::Simple
- IO::All
- Modern::Perl
- Pod::Stripper
- Test::Most
- Vi::QuickFix
- warnings::unused
The following core modules are required by some helper scripts:
- File::Path
- File::Spec::Functions
- File::Temp
- Getopt::Long
- Term::ANSIColor
These are often miserable hacks, but they work for me. They assume that when
you are in a Perl project, you stay in the home directory of said project (in
other words, you don't cd t or cd lib/My/Project).
Also, often depends on your @INC being set up correctly.
| Command | Description |
|---|---|
| ,dd | Add a Data::Dumper debugging statement |
| ,e | (visual mode) Extract subroutine |
| ,pv | When your cursor is on a module, print the module version |
| ,pd | Run perldoc on the current buffer |
| ,pt | Run perltidy on current buffer |
| ,pt | (visual mode) Run perltidy on selected lines |
| ,d | Run the Perl debugger on the current buffer |
| ,rr | Rebuild my current project (requires a bash script that needs to be updated) |
| ,s | Print subroutines found in current buffer. Nasty hack. |
| ,S | List unused subs in current buffer (hack) |
| ,c | perl -c on current buffer (see [1]) |
| ,gg | GoGo to module's tests, or test's module (see [2]) |
| ,gc | Same as ,gg, but uses the current module name under cursor |
| ,gm | Jump to the module name under the cursor |
| ,gp | Jump to pod for the module name under the cursor |
| ,gs | Jumps to the sub definition (if found) of the sub name found under the cursor |
| ,r | Run the code in the current buffer |
| ,r | (visual mode) run selected lines and insert output after |
- Runs a modified
perl -con the current buffer. Useswarnings::unusedandVi::QuickFix. See also this blog post. - If in a module, jump to its tests ("GoGo"). If in the tests, jump to the
module. Requires some hacking on the
bin/get_correspondingfile. I need to update that to allow per-project configuration.
Perl Tests
If you're in a *.t file, we assume you're running tests.
| Command | Description |
|---|---|
| ,r | Run the current test file in verbose mode |
| ,t | Run the current test file in verbose mode |
| ,T | Run the current test file and output the results into a new buffer |
| ,fp | Turns all comments into explain() statements. Test must use Test::Most |
| ,tb | Run all tests open in current buffers |