3

我一直在尝试使用 vim 来简化编写乳胶。为此,我想编写一个函数,以便于编写矩阵。这就是我想要它做的事情。

在插入模式下

如果我输入 mmatrix (不是错字。我想要两个 m)

我想让它问我需要的行数和列数

然后用所需数量的占位符打开一个空白矩阵(表示为 <++>)

这是我写的代码

imap mmatrix <C-o>:call Matrix
func! Matrix(rows, columns)
    for row in a:rows
       for col in a:columns
           exec "normal! i<++>&  "
       endfor
       exec "normal! i\\\\ <CR>"
    endfor
endfunction

所以对于一个 2x2 矩阵,它应该看起来像

<++>& <++>\\
<++>& <++>\\

但是,这是行不通的。我可以知道如何修改此文件以使其执行我想要的操作吗?

4

1 回答 1

2

我得到了这个工作:

func! Matrix(rows, columns)
   for row in range(a:rows)
      for col in range(a:columns)
          exe "norm i<++>&  "
      endfor
      exe "norm Xi\\\\\\\<cr>"
   endfor
endfunction

另一种选择是使用命令而不是 imap,例如:

command! -nargs=1 M :call Matrix(<args>)

然后您可以:M 2,4在正常模式下使用来调用该函数。

于 2012-07-05T21:47:59.397 回答