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.
- Vim 8.1+ or Neovim 0.4.3+
lexima.vim provides some default rules to input pairs.
(the cursor position is represented by |
)
If g:lexima_enable_basic_rules
is 1
, the following rules are enabled.
(default value: 1
)
Before Input After
------------------------------------
| ( (|)
------------------------------------
| " "|"
------------------------------------
""| " """|"""
------------------------------------
''| ' '''|'''
------------------------------------
``| ` ```|```
------------------------------------
\| [ \[|
------------------------------------
\| " \"|
------------------------------------
\| ' \'|
------------------------------------
I| 'm I'm|
------------------------------------
(|) ) ()|
------------------------------------
'|' ' ''|
------------------------------------
(|) <BS> |
------------------------------------
'|' <BS> |
------------------------------------
and much more... (See g:lexima#default_rules
at autoload/lexima.vim
)
If g:lexima_enable_newline_rules
is 1
, the following rules are enabled.
(default value: 1
)
Before Input After
------------------------------------
{|} <CR> {
|
}
------------------------------------
{| <CR> {
|
}
------------------------------------
```vim|``` <CR> ```vim
|
```
------------------------------------
Same as ()
and []
.
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| <CR> if x == 42
|
end
--------------------------------------
def foo()| <CR> def foo()
|
end
--------------------------------------
bar.each do| <CR> 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
.
lexima.vim provides highly customizable interface.
You can define your own rule by using lexima#add_rule()
.
" 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': '<BS>', 'at': '\$\%#\$', 'delete': 1, 'filetype': 'latex'})
You will get
Before Input After
---------------------
| $ $|$
---------------------
$|$ $ $$|
---------------------
$|$ <BS> |
---------------------
These rules are enabled at only latex
filetype.
For more information, please see :help lexima-customization
If you type foo("bar
, you get
foo("bar")
and once you type 0.
, you finally get
foo("bar")foo("bar")