Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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...
- Host: GitHub
- URL: https://github.com/cohama/lexima.vim
- Owner: cohama
- Created: 2014-08-30T16:56:04.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2023-12-20T04:14:53.000Z (9 months ago)
- Last Synced: 2024-06-18T13:48:14.162Z (3 months ago)
- Language: Vim Script
- Homepage:
- Size: 250 KB
- Stars: 994
- Watchers: 15
- Forks: 46
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- my-awesome-github-stars - cohama/lexima.vim - Auto close parentheses and repeat by dot dot dot... (Vim Script)
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")
```