3

私はラテックスを書くのを簡単にするためにvimを使おうとしています。そのために、行列を書きやすくする関数を書きたいと思います。これが私がやりたいことです。

挿入モード中

mmatrixと入力した場合(タイプミスではありません。2つの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 に答える