2016-04-14 52 views
4

有谁知道如何完全禁用Rstudio中的自动完成?在R studio中禁用自动完成

我在工具>全局选项中看不到它的选项;只有一种方法可以将其变为“手动(标签)”或“触发时”。输入代码时我无法输入标签,这让我发疯。

谢谢,保罗

+1

相同。这是一个适当的错误,考虑到行为应该绑定到一个键,但即使绑定被禁用后仍然存在... https://support.rstudio.com/hc/en-us/community/posts/210476487-Disable-tab-完成即ie-unbind-Retrieve-Completions-from-Tab-key-这是很久以前的要求,所以我猜他们根本不认为它很重要... https://support.rstudio.com/hc/ EN-US /社区/职位/ 200651216,如何对禁用标签代码,完井 – Frank

回答

2

我同意这是非常讨厌。 RStudio完全忽略了代码完成快捷方式的用户偏好,并在源代码中验证了这一点。我发现了以下解决方法,它可以在控制台和源视图中禁用TAB自动完成功能,同时使用CTRL-SPACE(Control-Space)键保留完整的自动完成功能。

此变通办法涉及到执行RStudio的自定义生成(最新主分支https://github.com/rstudio/rstudio.git)。注意:在Mac OS X El Capitan/Sierra上,必须安装Java SDK,并且必须安装Apache Ant和OpenSSL(即通过Homebrew - brew install ant; brew install openssl),除了列出的依赖关系,然后按照说明运行cmake。

对于解决办法,我注释掉硬编码TAB完成在下列文件触发,然后通过CMake的(每指令)所建的发行版本和须藤使安装:

在目录: 的src/GWT/src目录/组织/ rstudio /工作室/客户/工作台/视图

./console/shell/assist/CompletionUtils.java

Lines 27-28: 
return /*(event.getKeyCode() == KeyCodes.KEY_TAB && modifier == KeyboardShortcut.NONE) 
     || */ (event.getKeyCode() == KeyCodes.KEY_SPACE && modifier == KeyboardShortcut.CTRL); 

=====

./console/shell/shell.java

Lines 517-518: 
/* if (event.getNativeKeyCode() == KeyCodes.KEY_TAB) 
    event.preventDefault(); */ 

=====

./console/shell/assist/RCompletionManager.java

Line 1156: 
// if (firstLine.matches("^\\s*$")) 

=====

./source/Source.java

Lines 382-383: 
/* commands.codeCompletion().setShortcut(
           new KeyboardShortcut(KeyCodes.KEY_TAB)); */