加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

vim – 宏中的条件操作

发布时间:2020-12-15 22:10:01 所属栏目:安全 来源:网络整理
导读:在VIM宏中,如何处理条件操作? if condition is true do this else do something else 基本的例子 文件内容: _abcdefg 宏将做: G^if letter is one of the following letters: a e i o u gg$i0ESCelse gg$i1ESCGx 重复7次缓冲区将是: _0111011 那么,我如
在VIM宏中,如何处理条件操作?

if condition is true
       do this
 else
       do something else

基本的例子

文件内容:

_
abcdefg

宏将做:

G^
if letter is one of the following letters: a e i o u
   gg$i0<ESC>
else
   gg$i1<ESC>
Gx

重复7次缓冲区将是:

_0111011

那么,我如何验证条件是否为真然后运行一个动作?

解决方法

由于Vim中没有“条件”命令,因此不能严格地使用宏来完成.您只能使用以下事实:当宏中的命令发出蜂鸣声时,宏重播将中止.递归宏使用此事实来停止迭代(例如,当j命令无法移动到缓冲区末尾的后续行时).

另一方面,Vimscript中的条件逻辑非常简单,宏可以:轻松调用任何Vimscript函数.

你的例子可以这样表达:

function! Macro()
    " Get current letter.
    normal! yl
    if @" =~# '[aeiou]'
        execute "normal! gg$i0&;ESC>"
    else
        execute "normal! gg$i1&;ESC>"
    endif
endfunction

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读