Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cohama/lexima.vim

Auto close parentheses and repeat by dot dot dot...
https://github.com/cohama/lexima.vim

Last synced: about 2 months ago
JSON representation

Auto close parentheses and repeat by dot dot dot...

Awesome Lists containing this project

README

        

lexima.vim
==========
[![Build Status](https://app.travis-ci.com/cohama/lexima.vim.svg?branch=master)](https://app.travis-ci.com/cohama/lexima.vim)

Auto close parentheses and repeat by dot dot dot...

Basically, you can automatically close pairs such as `()`, `{}`, `""`, ...
But in advance, you can also customize the rule to automatically input
any character on any context.

SCREEN SHOTS
------------
![Screen Shot](http://i.gyazo.com/af2d7a59c82f93e49a6fd424dbbf6f88.gif)

REQUIREMENTS
------------

- Vim 8.1+ or Neovim 0.4.3+

DEFAULT RULES
-------------

lexima.vim provides some default rules to input pairs.
(the cursor position is represented by `|`)

### Basic Rules
If `g:lexima_enable_basic_rules` is `1`, the following rules are enabled.
(default value: `1`)

Before Input After
------------------------------------
| ( (|)
------------------------------------
| " "|"
------------------------------------
""| " """|"""
------------------------------------
''| ' '''|'''
------------------------------------
``| ` ```|```
------------------------------------
\| [ \[|
------------------------------------
\| " \"|
------------------------------------
\| ' \'|
------------------------------------
I| 'm I'm|
------------------------------------
(|) ) ()|
------------------------------------
'|' ' ''|
------------------------------------
(|) |
------------------------------------
'|' |
------------------------------------

and much more... (See `g:lexima#default_rules` at `autoload/lexima.vim`)

### New Line Rules
If `g:lexima_enable_newline_rules` is `1`, the following rules are enabled.
(default value: `1`)

Before Input After
------------------------------------
{|} {
|
}
------------------------------------
{| {
|
}
------------------------------------
```vim|``` ```vim
|
```
------------------------------------

Same as `()` and `[]`.

### Endwise Rules
If `g:lexima_enable_endwise_rules` is `1`, the following rules are enabled.
(default value: `1`)

For example, in ruby filetype

Before Input After
--------------------------------------
if x == 42| if x == 42
|
end
--------------------------------------
def foo()| def foo()
|
end
--------------------------------------
bar.each do| bar.each do
|
end
--------------------------------------

and same as `module`, `class`, `while` and so on.

In vim filetype, `function`, `if`, `while` ... rules are available.
And also you can use in sh (zsh) such as `if`, `case`.

CUSTOMIZATION
-------------
lexima.vim provides highly customizable interface.
You can define your own rule by using `lexima#add_rule()`.

```vim
" Please add below in your vimrc
call lexima#add_rule({'char': '$', 'input_after': '$', 'filetype': 'latex'})
call lexima#add_rule({'char': '$', 'at': '\%#\$', 'leave': 1, 'filetype': 'latex'})
call lexima#add_rule({'char': '', 'at': '\$\%#\$', 'delete': 1, 'filetype': 'latex'})
```

You will get

Before Input After
---------------------
| $ $|$
---------------------
$|$ $ $$|
---------------------
$|$ |
---------------------

These rules are enabled at only `latex` filetype.
For more information, please see `:help lexima-customization`

DOT REPEATABLE
--------------
If you type `foo("bar`, you get
```
foo("bar")
```

and once you type `0.`, you finally get
```
foo("bar")foo("bar")
```