神操作:教你如何將Vim變成一個R語言IDE

責任編輯:editor006

作者:田曉旭 

2017-12-13 15:51:03

摘自:it168網站

首先說明,本文不適合R語言初學者閱讀、模仿和使用,如果是初學者,那么RStudio可能是更適合也更完美的工具。Nvim - R允許用戶使用 rv命令查看數據幀,它會在Mac上使用X Quartz顯示數據幀,或者是通過Vim的CSV插件來顯示。

首先說明,本文不適合R語言初學者閱讀、模仿和使用,如果是初學者,那么RStudio可能是更適合也更完美的工具。如果你在工作生活中遇到Vim / Emacsland,那么本文可能會給你解惑不少。

為什么不直接使用RStudio呢?

神操作:教你如何將Vim變成一個R語言IDE

這是一個很棒的問題,站在我的角度來說,主要的原因速度和熟悉度。雖然RStudio也有Vim鍵綁定,但是我實在是用不慣,我已經被Vim毀了!

R In Vim

首先,在Vim中尋求R語言支持就是很殘酷的,不僅選擇少,而且支持也很少!所以你最好的選擇是使用一個單獨的: :terminal buffer,其基本工作流程如下:

·在myFile.R編寫代碼

·可視化選擇代碼

·粘貼代碼到: terminal buffer

·執(zhí)行代碼

·清洗和重復

這種方法雖然看起來不算太繁瑣,但是時間一長,難免覺得單調乏味。除此之外,這種方法還有很多不足之處,主要集中在查看定義內容,查看數據,以及一些基本的 completion + linting。

救世主Nvim-R

Nvim - R是我最喜歡的Vim插件之一,它有很多寶藏值得我們挖掘,毫不夸張的說,它能夠把一把舊水槍變成了一個功能齊全的機關槍。

首先第一步,安裝Nvim-R。我用的是vim - plug,你可以使用任何插件管理器輕松安裝它。

Plug 'jalvesaq/Nvim-R'

然后打開R文件并點擊 rf,你會看到terminal buffer 出現在與你當前會話綁定的R控制臺,點擊 rq。

神操作:如何將Vim變成一個R語言IDE

R file + R console

值得注意的一點是,控制臺并沒有綁定到當前緩沖區(qū)。這意味著您可以將多個緩沖區(qū)都輸入到同一個控制臺。想要更深入地了解R和Vim在nvim - R中的通信方式請點擊:https://github.com/jalvesaq/Nvim-R

秘密武器

既然已經掌握了基本的知識,我們就可以深入研究Nvim – R中所提供的一切。下面這個鏈接中包含了大量的內置快捷鍵,希望能夠對你有所幫助:https://github.com/jalvesaq/Nvim-R/blob/master/doc/Nvim-R.txt

發(fā)送:

Nvim - r中有很多方法可以發(fā)送代碼行:

Send :: Entire File aa

Send :: Entire Block b

Send :: Entire Function f

Send :: Entire Selection ss

Send :: Entire Line l

神操作:如何將Vim變成一個R語言IDE

  以上是我把基本操作映射到鍵盤上的代碼,這樣做法可以節(jié)約很多時間。

Object Browser

首先,Object Browser通過鍵入 ro請求的特性,查看在當前環(huán)境中哪些變量和庫是活躍的。還可以通過鍵入 rl查看對象,該函數將在當前的控制臺中運行l(wèi)s()函數。

Documentation

為了更好地理解代碼,你可以選擇以下操作:在Nvim - R中有兩個特別的注釋 rh - help和 re - example。

除此之外,還有另一個選擇就是Dash插件。最簡單的使用方法如下:

神操作:如何將Vim變成一個R語言IDE

現在,當你想要在R代碼或任何其他語言中尋找更多信息的時候,就把鼠標放在單詞上,然后點擊d,Dash APP會彈出相關信息。對于在Vim中使用多種語言的使用者來說,Dash是很實用的工具。

查看數據

接下來,就是查看數據了。RStudio自帶了一個漂亮的數據查看器,可以方便地獲取數據。這在Vim中有點困難,但也并非不可能。

Nvim - R允許用戶使用 rv命令查看數據幀,它會在Mac上使用X Quartz顯示數據幀,或者是通過Vim的CSV插件來顯示。CSV插件附帶了一大堆用于操作數據的額外特性,不過,我個人建議使用Excel。

其他的提示和技巧

不管你能力如何,下面這些小技巧你一定可以用得上:

Inline Code Output

如果有一行代碼,你按下 o,您將看到在當前文件中顯示為輸出。

函數

代替?zhèn)鹘y的str() + plot(),Nvim-R有更簡單的方法:

summary() :: s

plot() :: g

args() :: a

setwd() :: d

print() :: p

names() :: n

Arrows

Arrows是一種很痛苦的類型。幸運的是,Nvim - R可以更容易從-映射到< -。

completion

通常情況下,我認為缺乏代碼自動完成是人們跳過Vim的主要原因。但這個觀點是錯誤的。

Nvim-R completion

Nvim - R支持代碼completion。用戶必須手動使用< c - x >< c - o >作為對象名稱,或< c - x >< c - a >作為函數參數。對于一些人來說,這個工作流是理想的,但是在VS Code這樣的智能感知選擇的對比下,就顯得很笨拙。

Ncm-R

Ncm - R是最佳選擇,它雖然是一個很新的包,但是很受歡迎,它與Nvim - R集成,以通過nvim - comple- manager為R提供異步completion。

Ncm - R為所有人提供了豐富的completion:

·來自全局R環(huán)境的對象;

·來自所有加載包的函數;

·包內部的library() 和require();

·數據集內data();

·函數內的參數;

·變量內部pipes %>% 和 ggplots +;

對于基本設置,請將下面的代碼添加到Vim配置文件中。

神操作:如何將Vim變成一個R語言IDE

  R Language Server

如果你還不熟悉語言服務器的作用,那么可以查看下面這個鏈接:。

R Language Server還處于早期階段,基本上是實驗性的。

Linting

建立linting很簡單,如果你是使用異步Lint引擎ALE作為驅動程序。你可以在.vimrc中做如下設置:

Plug 'w0rp/ale'

然后安裝lintr:

install.packages('lintr')

進行到這一步,你基本就是完成了將Vim設置成為R語言IDE的工作,希望本文能夠對你有所幫助。如果有任何想法,歡迎在下面留言評論。

鏈接已復制,快去分享吧

企業(yè)網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號