如何让gedit自动缩进代码

55
我试图让gedit自动缩进我的代码。 首选项中的自动缩进复选框无效。 是否有方法使gedit自动缩进代码? (顺便说一下,我只在意C ++缩进。 我不需要其他语言的缩进。)

“autoindent”是什么意思?gedit选项的作用是:当您键入缩进行(按tab或使用一些空格)并按<kbd>Enter</kbd>键时,新行将具有与上一行相同的缩进。它不起作用吗?如果可以正常工作,那么您期望的是什么? - brandizzi
我是指像一个集成开发环境(IDE)一样,它会在括号之间自动插入一个制表符。虽然这个我不知道的功能听起来不错。谢谢! - Linuxios
1
啊,现在我明白了,它更像Eclipse和其他IDEs......据我所知,gedit不会这样做,也没有任何插件提供这样的功能。然而,通过一个插件似乎是可行的,所以您可以最终寻找这样的插件。 - brandizzi
嗯,好吧。目前我仍然更喜欢使用gedit而不是IDE。我发现所有的IDE都是基于Java的,而Java和我的系统并不是很兼容——至少可以这么说。在我的Ubuntu上它很慢且容易出错。因此我已经开始使用gedit来编写所有的代码,从Ruby到C++。也许我需要重新考虑使用IDE? - Linuxios
4个回答

38

gedit有自动缩进功能,前往

编辑 -> 首选项 -> 编辑器 -> 第三行


1
谢谢。我已经知道了这个,但它并没有做我想要的事情。无论如何还是加一分。 - Linuxios
13
Gedit自动缩进似乎只会将光标放在前一行的缩进下方,除此之外不做任何其他操作。 - Karl Adler

28

对于那些正在寻找如何将'智能文本完成'插件复制到.local/share/gedit/plugins文件夹中的人,请按照以下步骤操作:

gedit的插件 '智能文本完成' 正好实现了你所描述的功能:https://github.com/nymanjens/gedit-intelligent-text-completion

user@example:~/.local/share$ cd ~/.local/share/
user@example:~/.local/share$ mkdir gedit
user@example:~/.local/share$ cd gedit/
user@example:~/.local/share/gedit$ mkdir plugins
user@example:~$ cp intelligent_text_completion.plugin intelligent_text_completion.py ~/.local/share/gedit/plugins/

1
使用此插件后,下次启动gedit3时出现错误:ERROR:/build/buildd/pygobject-3.4.0/gi/_gobject/pygobject.c:946:pygobject_new_full: assertion failed: (tp != NULL) 已中止 - Karl Adler
我以前听说过这种错误,但是在我的系统上似乎无法重现。如果您找到了解决方案,请告诉我。 - Jens Nyman
代码已经迁移到 Github:https://github.com/nymanjens/gedit-intelligent-text-completion - nephiw

18

这里提供另一种解决方法,您可以使用vim在Gedit内自动缩进和自动格式化代码。

首先确保已经安装了vim。 接下来,从“工具”菜单中添加一个“外部工具”,并使用以下代码:

#!/bin/sh
CMD_FILE_NAME=.formatcommand;
TMP_FILE_NAME=.tempvimfile;
touch $CMD_FILE_NAME&&echo "gg=G :wq! "$TMP_FILE_NAME > $CMD_FILE_NAME&&(vim $GEDIT_CURRENT_DOCUMENT_NAME -s $CMD_FILE_NAME > /dev/null 2>/dev/null)&&rm $CMD_FILE_NAME;
cat $TMP_FILE_NAME
rm $TMP_FILE_NAME

还要确保:

  • "保存"设置为 "当前文档"。
  • "输入"设置为 "无"。
  • "输出"设置为 "替换当前文档"。

您还可以设置快捷键,我喜欢像Netbeans一样使用 Alt+Shift+F。 现在,每当您按下快捷键时,当前文件将被保存并自动格式化。

这适用于任何编程/脚本语言,只要文件的扩展名是正确的。

如果没有缩进,请在~/.vimrc文件中添加filetype indent on,然后它就会起作用。

有关更多详细信息,请查看我的个人博客


太棒了!谢谢!时间正好,因为我刚开始使用vim来进行编辑 :) - Linuxios
太好了 :) 我匆忙写下这个脚本,所以代码可能看起来不是很优雅,但它确实可以工作! - Hussein El Motayam
1
嘿@HusseinElMotayam,我刚刚尝试了你的解决方法,但是它给了我这些错误: 运行工具:格式Vim:警告:输出不是终端 Vim:警告:输入不是来自终端 cat:.tempvimfile:没有那个文件或目录 rm:无法删除“.tempvimfile”:没有那个文件或目录退出:256 - Etienne Lawlor
@HusseinElMotayam 你是我的英雄!;) 我会稍微编辑您的帖子,以修复一些小问题。 - naugtur
我想喜欢它,但它会通过缩进不应该缩进的行来破坏Python代码。 - Amanda
谢谢,这真的很有帮助! - JoxTraex

4

Ubuntu 16.04和Gedit

  1. 激活外部工具插件

    编辑→首选项→插件→外部工具

  2. 管理外部工具

    工具→管理外部工具

  3. 添加工具

    • 单击管理外部工具窗口左下角的+按钮
    • 您可以将新工具重命名为任何您喜欢的名称,例如JSON格式化程序
    • 请参考下面的图片进行设置

    Manage External Tools screenshot


2
请友善点,你能把Python代码作为文本粘贴吗? - cmak.fr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接