在R studio中禁用自动完成

cod*_*boy 8 r rstudio

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

我没有在工具>全局选项中看到它的选项; 只能将其转换为"手动(标签)"或"触发时".键入代码时我无法输入选项卡,这让我发疯.

Ian*_*nen 15

通过转到工具>全局选项>代码>完成并取消选中“允许在控制台中自动完成”,这在RStudio IDE 1.0+版本上是可能的。


rai*_*tic 5

我同意这很烦人。RStudio完全忽略了用户对代码完成快捷方式的偏好,我在源代码中对此进行了验证。我发现以下解决方法,该方法在控制台视图和源视图中都禁用了TAB自动完成功能,同时使用CTRL-SPACE(Control-Space)键保留了完整的自动完成功能。

此解决方法涉及对RStudio进行自定义构建(最新的master分支位于https://github.com/rstudio/rstudio.git)。

注意:在运行之前,除了列出的依赖项外,在Mac OS X El Capitan / Sierra上,还必须安装Java SDK,并且必须安装Apache Ant和OpenSSL(即通过Homebrew-brew install ant; brew install openssl)。请按照说明进行操作。

对于变通办法,我在以下文件中注释了硬编码的TAB完成触发器,然后通过cmake(按照说明)和sudo make install构建了发行版:

在目录中:src / gwt / src / org / rstudio / studio / client / workbench / views

./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);
Run Code Online (Sandbox Code Playgroud)

=====

./console/shell/shell.java

Lines 517-518:
/* if (event.getNativeKeyCode() == KeyCodes.KEY_TAB)
   event.preventDefault(); */
Run Code Online (Sandbox Code Playgroud)

=====

./console/shell/assist/RCompletionManager.java

Line 1156:
//   if (firstLine.matches("^\\s*$"))
Run Code Online (Sandbox Code Playgroud)

=====

./source/Source.java

Lines 382-383:
/* commands.codeCompletion().setShortcut(
                               new KeyboardShortcut(KeyCodes.KEY_TAB)); */
Run Code Online (Sandbox Code Playgroud)