Ion*_*zău 5 vim buffer vim-macros
在VIM宏中,如何处理条件操作?
if condition is true
do this
else
do something else
Run Code Online (Sandbox Code Playgroud)
文件内容:
_
abcdefg
Run Code Online (Sandbox Code Playgroud)
宏将做:
G^
if letter is one of the following letters: a e i o u
gg$i0<ESC>
else
gg$i1<ESC>
Gx
Run Code Online (Sandbox Code Playgroud)
重复7次缓冲区将是:
_0111011
Run Code Online (Sandbox Code Playgroud)
那么,我如何验证条件是否为真然后运行一个动作?
由于Vim中没有"条件"命令,因此不能严格地使用宏来完成.您只能使用以下事实:当宏中的命令发出蜂鸣声时,宏重播将中止.递归宏使用此事实来停止迭代(例如,当j命令无法移动到缓冲区末尾的后续行时).
另一方面,条件逻辑在Vimscript中非常容易,宏可以:call很容易地使用任何Vimscript函数.
你的例子可以这样表达:
function! Macro()
" Get current letter.
normal! yl
if @" =~# '[aeiou]'
execute "normal! gg$i0\<ESC>"
else
execute "normal! gg$i1\<ESC>"
endif
endfunction
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2248 次 |
| 最近记录: |