vim像sublime一样的括号处理
- ceclinux
- 帖子: 308
- 注册时间: 2013-01-17 2:42
- 系统: Ubuntu 12.04LTS
vim像sublime一样的括号处理
求一段.vimrc
要求如下,在一行中间键入(,则只会出现(
在一行末端键入(,则出现(|)
上面|为光标位置
要求如下,在一行中间键入(,则只会出现(
在一行末端键入(,则出现(|)
上面|为光标位置
- lilydjwg
- 论坛版主
- 帖子: 4252
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: vim像sublime一样的括号处理
很简单,我随手就可以给你写一个:
代码: 全选
function MayCloseParentheses()
if col('.') == col('$')
return "()\<Left>"
else
return "("
endif
endfunction
inoremap <expr> <silent> ( MayCloseParentheses()
- ceclinux
- 帖子: 308
- 注册时间: 2013-01-17 2:42
- 系统: Ubuntu 12.04LTS
Re: vim像sublime一样的括号处理
我预感lilydjwg大神会回答,果然如此~lilydjwg 写了:很简单,我随手就可以给你写一个:代码: 全选
function MayCloseParentheses() if col('.') == col('$') return "()\<Left>" else return "(" endif endfunction inoremap <expr> <silent> ( MayCloseParentheses()
- ceclinux
- 帖子: 308
- 注册时间: 2013-01-17 2:42
- 系统: Ubuntu 12.04LTS
Re: vim像sublime一样的括号处理
我把manual看了一遍,<silent>这里不懂,为什么要避免回显,本来就不会回显的吧,谢谢lilydjwg 写了:很简单,我随手就可以给你写一个:代码: 全选
function MayCloseParentheses() if col('.') == col('$') return "()\<Left>" else return "(" endif endfunction inoremap <expr> <silent> ( MayCloseParentheses()
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- lilydjwg
- 论坛版主
- 帖子: 4252
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: vim像sublime一样的括号处理
习惯性地加上了。不加应该也看不到什么吧。ceclinux 写了:我把manual看了一遍,<silent>这里不懂,为什么要避免回显,本来就不会回显的吧,谢谢lilydjwg 写了:很简单,我随手就可以给你写一个:代码: 全选
function MayCloseParentheses() if col('.') == col('$') return "()\<Left>" else return "(" endif endfunction inoremap <expr> <silent> ( MayCloseParentheses()
- lilydjwg
- 论坛版主
- 帖子: 4252
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: vim像sublime一样的括号处理
ee 回帖不看帖的么?eexpress 写了:这不更简单嘛。代码: 全选
imap ( ()<ESC>i
-
- 帖子: 403
- 注册时间: 2007-10-27 1:04
Re: vim像sublime一样的括号处理
嗯。lilydjwg 一直都这么熟悉vim脚本;
我还是喜欢手动一点进行控制;
(
return "("
<Alt-(>
return "()<left>"
因为需求总是变化的。这种操作对我而言,已经足够省事了。
我还是喜欢手动一点进行控制;
(
return "("
<Alt-(>
return "()<left>"
因为需求总是变化的。这种操作对我而言,已经足够省事了。
- ceclinux
- 帖子: 308
- 注册时间: 2013-01-17 2:42
- 系统: Ubuntu 12.04LTS
Re: vim像sublime一样的括号处理
代码: 全选
function MayCloseParentheses()
"(当前指针的横坐标)是否等于(当前指针所在行的长度加一),即判断指针是否在当前行的末端
if col('.') == col('$')
"返回(),然后指针向左移一位(移入括号中)
return "()\<Left>"
else
return "("
endif
endfunction
"<expr>为对方法的映射
inoremap <expr> ( MayCloseParentheses()
- ceclinux
- 帖子: 308
- 注册时间: 2013-01-17 2:42
- 系统: Ubuntu 12.04LTS
Re: vim像sublime一样的括号处理
[quote="sarrow"]嗯。lilydjwg 一直都这么熟悉vim脚本;
我还是喜欢手动一点进行控制;
(
return "("
<Alt-(>
return "()<left>"
因为需求总是变化的。这种操作对我而言,已经足够省事了。[/quote《]
<Alt->( 可以这样映射吗
我还是喜欢手动一点进行控制;
(
return "("
<Alt-(>
return "()<left>"
因为需求总是变化的。这种操作对我而言,已经足够省事了。[/quote《]
<Alt->( 可以这样映射吗
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- ceclinux
- 帖子: 308
- 注册时间: 2013-01-17 2:42
- 系统: Ubuntu 12.04LTS
Re: vim像sublime一样的括号处理
呃,中间插()我是很少,一般中间插(然后再过一个word然后插)eexpress 写了:没注意看。
只是这要求,真写代码的,几乎用不上。
行中间插()是很正常的事情。
要是中间插了(),发现多插了麻烦就大了。。需要<Esc>lx
-
- 帖子: 403
- 注册时间: 2007-10-27 1:04
Re: vim像sublime一样的括号处理
多插了,直接 normal 下 u 就行了。要是中间插了(),发现多插了麻烦就大了。。需要<Esc>lx
或者删除最内层:
<Ctrol-o>ca(
要敲4下键盘,也累啊!
- acer4740
- 帖子: 1405
- 注册时间: 2010-09-13 19:04
- 来自: 0xFF00EE
- Fermat618
- 帖子: 728
- 注册时间: 2008-12-28 16:01
Re: vim像sublime一样的括号处理
转了一圈之后,把所有的补全括号的插件都去了。这玩意省就省了一个字母,添起乱来毫不含糊。括号里面东西少就打完了再打右括号,不会卡。东西多就把两个括号打完手动移动光标。
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
爱因斯坦会拉小提琴
爱因斯坦会骑自行车