有谁知道如何完全禁用Rstudio中的自动完成?
我没有在工具>全局选项中看到它的选项; 只能将其转换为"手动(标签)"或"触发时".键入代码时我无法输入选项卡,这让我发疯.
我同意这很烦人。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)