Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TEst #707

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open

TEst #707

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
248 changes: 248 additions & 0 deletions README.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
# Janus: Carlhuda's vim Distribution

This is a basic distribution of vim plugins and tools intended to be run
on top of the latest MacVIM snapshot.

We (Carl and Yehuda) both use this distribution for our own use, and
welcome patches and contributions to help make it an effective way to
get started with vim and then use it productively for years to come.

At present, we are still learning to use vim ourselves, so you should
anticipate a period of rapid development while we get a handle on the
best tools for the job. So far, we have mostly integrated existing
plugins and tools, and we anticipate to continue doing so while also
writing our own plugins as appropriate.

In general, you can expect that the tools we use work well together and
that we have given careful thought to the experience of using MacVIM
with the tools in question. If you run into an issue using it, please
report an issue to the issue tracker.

## Installation

0. `for i in ~/.vim ~/.vimrc ~/.gvimrc; do [ -e $i ] && mv $i $i.old;
done`
1. `git clone git://github.com/carlhuda/janus.git ~/.vim`
2. `cd ~/.vim`
3. `rake`

or

`curl http://github.com/carlhuda/janus/raw/master/bootstrap.sh \
-o - | sh`

## Updating to the latest version

To update to the latest version of the distribution, just run `rake`
again inside your `~/.vim` directory.

# Intro to VIM

Here's some tips if you've never used VIM before:

## Tutorial

* Type `vimtutor` into a shell to go through a brief interactive
tutorial inside VIM.

## Modes

* VIM has two modes:
* insert mode- stuff you type is added to the buffer
* normal mode- keys you hit are interpretted as commands
* To enter insert mode, hit `i`
* To exit insert mode, hit `<ESC>`

## Useful commands

* Use `:q` to exit vim
* Certain commands are prefixed with a `<Leader>` key, which maps to `\`
by default. Use `let mapleader = ","` to change this.

# Features

This vim distribution includes a number of packages built by others.

## Base Customizations

Janus ships with a number of basic customizations for vim:

* Line numbers
* Ruler (line and column numbers)
* No wrap (turn off per-buffer via set :wrap)
* Soft 2-space tabs, and default hard tabs to 2 spaces
* Show tailing whitespace as `.`
* Make searching highlighted, incremental, and case insensitive unless a
capital letter is used
* Always show a status line
* Allow backspacing over everything (identations, eol, and start
characters) in insert mode
* `<Leader>e` expands to `:e {directory of current file}/` (open in the
current buffer)
* `<Leader>tr` expands to `:te {directory of current file}/` (open in a
new MacVIM tab)
* `<C-P>` inserts the directory of the current file into a command
* Automatic insertion of closing quotes, parenthesis, and braces

## "Project Drawer" aka NERDTree

NERDTree is a file explorer plugin that provides "project drawer"
functionality to your vim projects. You can learn more about it with
:help NERDTree.

**Customizations**: Janus adds a number of customizations to the core
NERDTree:

* Use `<Leader>n` to toggle NERDTree
* Ignore `*.rbc` and `*~` files
* Automatically activate NERDTree when MacVIM opens and make the
original buffer the active one
* Provide alternative :e, :cd, :rm and :touch abbreviations which also
refresh NERDTree when done (when NERDTree is open)
* When opening vim with vim /path, open the left NERDTree to that
directory, set the vim pwd, and clear the right buffer
* Disallow `:e`ing files into the NERDTree buffer
* In general, assume that there is a single NERDTree buffer on the left
and one or more editing buffers on the right

## Ack.vim

Ack.vim uses ack to search inside the current directory for a pattern.
You can learn more about it with :help Ack

**Customizations**: Janus rebinds command-shift-f (`<D-F>`) to bring up
`:Ack `.

## Command-T

Command-T provides a mechanism for searching for a file inside the
current working directory. It behaves similarly to command-t in
Textmate.

**Customizations**: Janus rebinds command-t (`<D-t>`) to bring up this
plugin. It defaults to `<Leader>t`.

## ConqueTerm

ConqueTerm embeds a basic terminal inside a vim buffer. The terminal has
an insert mode in which you can type commands, tab complete and use the
terminal like normal. You can also escape out of insert mode to use
other vim commands on the buffer, like yank and paste.

**Customizations**: Janus binds command-e (`<D-e>`) to bring up
`:ConqueTerm bash --login` in the current buffer.

**Note**: To get colors working, you might have to `export TERM=xterm`
and use `ls -G` or `gls --color`

## indent\_object

Indent object creates a "text object" that is relative to the current
ident. Text objects work inside of visual mode, and with `c` (change),
`d` (delete) and `y` (yank). For instance, try going into a method in
normal mode, and type `v ii`. Then repeat `ii`.

**Note**: indent\_object seems a bit busted. It would also be nice if
there was a text object for Ruby `class` and `def` blocks.

## surround

Surround allows you to modify "surroundings" around the current text.
For instance, if the cursor was inside `"foo bar"`, you could type
`cs"'` to convert the text to `'foo bar'`.

There's a lot more; check it out at `:help surround`

## NERDCommenter

NERDCommenter allows you to wrangle your code comments, regardless of
filetype. View `help :NERDCommenter` for all the details.

**Customizations**: Janus binds command-/ (`<D-/>`) to toggle comments.

## SuperTab

In insert mode, start typing something and hit `<TAB>` to tab-complete
based on the current context.

## ctags

Janus includes the TagList plugin, which binds `:Tlist` to an overview
panel that lists all ctags for easy navigation.

**Customizations**: Janus binds `<Leader>rt` to the ctags command to
update tags.

**Note**: For full language support, run `brew install ctags` to install
exuberant-ctags.

**Tip**: Check out `:help ctags` for information about VIM's built-in
ctag support. Tag navigation creates a stack which can traversed via
`Ctrl-]` (to find the source of a token) and `Ctrl-T` (to jump back up
one level).

## Git Support (Fugitive)

Fugitive adds pervasive git support to git directories in vim. For more
information, use `:help fugitive`

Use `:Gstatus` to view `git status` and type `-` on any file to stage or
unstage it. Type `p` on a file to enter `git add -p` and stage specific
hunks in the file.

Use `:Gdiff` on an open file to see what changes have been made to that
file

## ZoomWin

When working with split windows, ZoomWin lets you zoom into a window and
out again using `Ctrl-W o`

**Customizations**: Janus binds `<Leader>z` to `:ZoomWin`

## Markdown Preview

Markdown preview takes the current buffer, converts the Markdown to
HTML, and opens it in your default browser.

**Customizations**: Janus binds `<Leader>p` to this plugin.

## Additional Syntaxes

Janus ships with a few additional syntaxes:

* Markdown (bound to \*.markdown, \*.md, and \*.mk)
* Mustache (bound to \*.mustache)
* Haml (bound to \*.haml)
* Sass (bound to \*.sass)
* SCSS (bound to \*.scss)
* An improved JavaScript syntax (bound to \*.js)
* Map Gemfile, Rakefile and Thorfile to Ruby
* Git commits (set your `EDITOR` to `mvim -f`)

## Color schemes

Janus includes the vim color sampler pack, which includes [over 100
popular color themes](http://www.vi-improved.org/color_sampler_pack/):

* jellybeans
* matrix
* railscasts2
* tango
* vibrantink
* vividchalk
* wombat
* xoria256

Use `:color vibrantink` to switch to a color scheme.

Janus also has a few customized versions of popular themes:

* jellybeans+
* molokai
* railscasts+

To permanently set a color scheme, update your local vimrc files:

echo color desert > ~/.vimrc.local
echo color jellybeans+ > ~/.gvimrc.local
48 changes: 4 additions & 44 deletions bootstrap.sh
Original file line number Diff line number Diff line change
@@ -1,44 +1,4 @@
#!/bin/bash

function die()
{
echo "${@}"
exit 1
}

function backup_previous_install()
{
# Add .old to any existing Vim file in the home directory
for filepath in "${HOME}/.vim" "${HOME}/.vimrc" "${HOME}/.gvimrc"; do
if [ -e $filepath ]; then
mv "${filepath}" "${filepath}.old" || die "Could not move ${filepath} to ${filepath}.old"
echo "${filepath} has been renamed to ${filepath}.old"
fi
done
}

function clone_janus()
{
# Clone Janus into .vim
git clone --recursive https://github.com/carlhuda/janus.git "${HOME}/.vim" \
|| die "Could not clone the repository to ${HOME}/.vim"
}

function run_rake()
{
# Run rake inside .vim
pushd "${HOME}/.vim" || die "Could not go into the ${HOME}/.vim"
rake || die "Rake failed."
popd
}

function main()
{
if [ ! -e "${HOME}/.vim/janus" -o "$1" == "--force" ]; then
backup_previous_install
clone_janus
fi
run_rake
}

main $1
for i in ~/.vim ~/.vimrc ~/.gvimrc; do [ -e $i ] && mv $i $i.old; done
git clone git://github.com/carlhuda/janus.git ~/.vim
cd ~/.vim
rake
70 changes: 70 additions & 0 deletions doc/ack.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
*ack.txt* Plugin that integrates ack with Vim

==============================================================================
Author: Antoine Imbert <antoine.imbert+ackvim@gmail.com> *ack-author*
License: Same terms as Vim itself (see |license|)

==============================================================================
INTRODUCTION *ack*

This plugin is a front for the Perl module App::Ack. Ack can be used as a
replacement for grep. This plugin will allow you to run ack from vim, and
shows the results in a split window.

:Ack[!] [options] {pattern} [{directory}] *:Ack*

Search recursively in {directory} (which defaults to the current
directory) for the {pattern}. Behaves just like the |:grep| command, but
will open the |Quickfix| window for you. If [!] is not given the first
error is jumped to.

:AckAdd [options] {pattern} [{directory}] *:AckAdd*

Just like |:Ack|, but instead of making a new list, the matches are
appended to the current |quickfix| list.

:AckFromSearch [{directory}] *:AckFromSearch*

Just like |:Ack| but the pattern is from previous search.

:LAck [options] {pattern} [{directory}] *:LAck*

Just like |:Ack| but instead of the |quickfix| list, matches are placed in
the current |location-list|.

:LAckAdd [options] {pattern} [{directory}] *:LAckAdd*

Just like |:AckAdd| but instead of the |quickfix| list, matches are added
to the current |location-list|

:AckFile [options] {pattern} [{directory}] *:AckFile*

Search recursively in {directory} (which defaults to the current
directory) for filenames matching the {pattern}. Behaves just like the
|:grep| command, but will open the |Quickfix| window for you.

Files containing the search term will be listed in the split window, along
with the line number of the occurrence, once for each occurrence. <Enter> on
a line in this window will open the file, and place the cursor on the matching
line.

See http://betterthangrep.com/ for more information.

==============================================================================
MAPPINGS *ack-mappings*

The following keyboard shortcuts are available in the quickfix window:

o open file (same as enter).

go preview file (open but maintain focus on ack.vim results).

t open in a new tab.

T open in new tab silently.

v open in vertical split.

gv open in vertical split silently.

q close the quickfix window.