基于下一行是否为空的不同命令

Different command based on if next line is empty

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

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

真题答案:

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

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

参考:

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

原问题原答案:

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

^M 是文字 <C-m><CR> 的同义词),您可以通过按 <C-v> 然后按 <CR>.

获得