基于下一行是否为空的不同命令
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>
.
获得
我正在尝试自动添加; , 或者通过击键在表达式末尾需要的任何内容,然后转到另一行。
基本上它会像 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>
.