我一直在尝试使用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矩阵,它应该看起来像
<++>& <++>\\
<++>& <++>\\
但是,这不起作用。我是否可以知道如何修改此文件以使其按照我的要求进行操作?
答案 0 :(得分: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
来调用该函数。