1890


`vim`で`R`を書くのに`vim-scripts/Vim-R-plugin`を利用しています。しかし、

[code]

    sapply(dfs, function(df) {
      sapply(1:5, function(i) {
        do.something(df, i)
      })
    })
    
[/code]

というコードがあったとして(あくまで例なので「`do.something`に1:5をベクトルで渡せば」という話は脇に置いてください)、`vim`でインデントしようとすると

[code]

    sapply(dfs, function(df) {
      sapply(1:5, function(i) {
        do.something(df, i)
    })
    })
    
[/code]

のように内側の閉じ括弧が行頭に来てしまいます。内側のfunctionを改行すると、閉じ括弧の問題は解消しますが、個人的にはfunctionで改行したくはありません。

[code]

    sapply(dfs, function(df) {
      sapply(1:5, 
        function(i) {
          do.something(df, i)
        })
    })
    
[/code]

`R`を`vim`から触っている方も多いとは思いますが、どのように解決しているのでしょうか。別のプラグインを使う、設定が間違っているなど、ご教示いただければと思います。

* * *

役に立つ情報かわかりませんが、関連する`.vimrc`の設定は以下のとおりです。(主にアロー演算子にまつわる問題を回避するための設定)

これらをコメントアウトしても現象は改善しません。

[code]

    let r_indent_align_args = 0
    let r_indent_ess_comments = 0
    let r_indent_ess_compatible = 0
    let vimrplugin_assign = 0
    
[/code]

尚、`Vim-R-plugin`を使わない場合も閉じ括弧の問題は解決せず、さらにインデントがおかしくなります。


CC BY-SA 3.0
2014-12-17T04:13:04.227
1859
2014-12-17T07:35:10.727
2014-12-17T05:36:15.403
3313
3313
question
vim r
Rの2重xapply()をvimで綺麗に整形する方法が知りたいです


Rはあまり詳しくないですが、formatRが使えるみたいです。

formatRを先にインストールしておいて:

[code]

    > install.packages("formatR")
    
[/code]

.vimrcに以下のように記述します:

[code]

    au BufNewFile,BufRead *.R setl ep=r\ -s\ -e\ 'library(formatR);tidy_source(text=readLines(file(\"stdin\")))'
    
[/code]

ファイルを開いて`gg=G`すれば整形できます。プラグインは、はずしましょう。


CC BY-SA 3.0
2014-12-17T07:35:10.727
1890
2014-12-17T07:35:10.727
62
1859
answer