2012-07-05 66 views
3

我一直在尝试使用vim来简化书写胶乳。为此,我想编写一个函数来使写矩阵变得容易。这是我想要它做的。vimrc写入文件

插入模式虽然

如果我输入mmatrix(不是笔误,我想要两个男款)

我希望它问我行,我需要

然后打开列数具有所需编号占位符的空白基质(表示< ++>)

下面是我写

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

经过一番搜索后,我发现imap应该如何编辑。但我仍然不知道如何打印文件。 – WiFO215 2012-07-05 21:15:52

+0

我也找到了打印的方法。我现在不确定如何换行。 似乎没有任何好处。 – WiFO215 2012-07-05 21:39:45

回答

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调用的函数。

+0

谢谢! Xi做什么?我知道X是要删除并且我要插入,但为什么你以这种特殊方式使用它? – WiFO215 2012-07-06 00:39:14

+0

'X'在正常模式下删除光标前的字符。由于该函数在循环中打印“”<++>&“',因此当循环结束时,行尾会留有额外的空间。你想要的例子在'&'和反斜线之间没有空格,所以我使用'X'在插入反斜杠和返回字符之前删除该空格。在这种情况下,'x'将不起作用,因为在打印其他语句之后,光标位于“新行”符号之上。 'X'似乎是消除这个问题的简单方法。 – Conner 2012-07-06 04:30:42