2

我正在尝试自动添加;, 或在表达式末尾需要的任何内容,然后转到另一行。

基本上它会是这样的inoremap <leader>; <C-o>A;,但我想要一点改进。如果下一行是空的(或不存在),我希望它这样做<C-o>A;<cr>,如果它不为空<C-o>A;<Down>。换句话说,我需要一种惯用的方法来检查下一行是否存在以及它是否为空。谢谢。

4

1 回答 1

5

回答实际问题:

inoremap <expr> <leader>; getline(line(".")+1) =~ "^$" ? "\<C-o>A;\<CR>" : "\<C-o>A;\<Down>"

“表达式”映射允许您根据一个或多个表达式的结果执行不同的宏。在这里,我们在一个简单的三元运算符中检查下面的行是否为空。

参考:

:help <expr>
:help getline()
:help line()
:help =~

原始问题的原始答案:

inoremap <leader>; <C-o>A;^M

^M是您通过按then获得的文字<C-m>(的同义词) 。<CR><C-v><CR>

于 2015-12-19T12:50:25.207 回答