Как заставить gedit делать автоматический отступ кода

Я пытаюсь заставить gedit автоматически ставить отступы в моем коде. Флажок автоматического отступа в настройках не работает. Есть ли способ заставить gedit использовать код с автоматическим отступом? (Кстати, меня действительно волнуют только отступы C++. Мне не нужны отступы для любого другого языка.)


person Linuxios    schedule 23.11.2011    source источник
comment
Что вы подразумеваете под автоиндентом? Опция от gedit делает следующее: когда вы вводите строку с отступом (нажав клавишу Tab или несколько пробелов) и нажимаете ‹kbd›Enter‹/kbd›, новая строка будет иметь тот же отступ, что и предыдущая. Разве это не работает таким образом? Если это сработает, чего вы ожидаете?   -  person brandizzi    schedule 23.11.2011
comment
Мне нравится IDE, где она автоматически вставит табуляцию между скобками. Хотя то, о чем я не знал, звучит нормально. Спасибо!   -  person Linuxios    schedule 24.11.2011
comment
Ах, теперь я понимаю, это больше похоже на Eclipse и другие IDE... AFAIk gedit этого не делает, и ни один плагин не предоставляет такой функциональности. Однако это кажется возможным с помощью плагина, поэтому вы можете поискать такой плагин в конце концов.   -  person brandizzi    schedule 24.11.2011
comment
Хм. Хорошо. Я все еще предпочитаю gedit IDE прямо сейчас. Каждая IDE, которую я нахожу, основана на Java, а Java и моя система не являются хорошими друзьями, если не сказать больше. Он медленный и глючный на моем Ubuntu. Я начал использовать gedit для всего своего кода, от ruby ​​до C++. Может быть, мне нужно вернуться к IDE?   -  person Linuxios    schedule 25.11.2011


Ответы (4)


Плагин «интеллектуальное завершение текста» для gedit делает именно то, что вы описываете: https://github.com/nymanjens/gedit-intelligent-text-completion

Для тех, кто пытается узнать, как скопировать файлы intelligent_text_completion.plugin и intelligent_text_completion.py в .local/share/gedit/plugins, сделайте следующее:

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/
person Jens Nyman    schedule 18.02.2012
comment
используя этот плагин, я получаю сообщение об ошибке при следующем запуске gedit3: ОШИБКА:/build/buildd/pygobject-3.4.0/gi/_gobject/pygobject.c:946:pygobject_new_full: утверждение не удалось: (tp!= NULL) Прервано - person Karl Adler; 18.04.2013
comment
Я слышал подобные ошибки раньше, но не могу воспроизвести их в своей системе. Если вы найдете решение, пожалуйста, дайте мне знать. - person Jens Nyman; 19.04.2013
comment
Код перемещен на github: github.com/nymanjens/gedit-intelligent-text-completion. - person nephiw; 04.07.2016

gedit имеет функцию автоматического отступа, перейдите к

Правка -> Настройки -> Редактор -> 3-я строка

person HarshaNadimpalli    schedule 06.11.2012
comment
Спасибо. Я уже знал об этом, и это не делало то, что я хотел. +1 в любом случае. - person Linuxios; 07.11.2012
comment
Автоматическое намерение Gedit, кажется, помещает только курсор под отступ от предыдущей строки. Больше ничего не делает. - person Karl Adler; 18.04.2013

Вот еще один обходной путь: вы можете использовать vim для автоматического отступа и автоматического форматирования кода изнутри Gedit.

Сначала убедитесь, что vim установлен. Затем добавьте «внешний инструмент» в Gedit из меню «Инструменты» и используйте следующий код:

#!/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

Также убедитесь, что:

  • «Сохранить» установлено на «Текущий документ».
  • «Ввод» установлен на «Ничего».
  • «Вывод» установлен на «Заменить текущий документ».

Вы также можете настроить горячую клавишу, я предпочитаю Alt+Shift+F, как Netbeans. Теперь всякий раз, когда вы нажимаете горячую клавишу, текущий файл будет сохранен и автоматически отформатирован.

Это будет работать на любом языке программирования/скриптов, если расширение файла правильное.

Если вы не получили отступ, поместите filetype indent on в свой файл ~/.vimrc, и он будет работать.

Подробнее см. в моем личном блоге.

person Hussein El Motayam    schedule 07.06.2012
comment
Это потрясающе! Спасибо! Хорошее время, потому что я только начал использовать vim для редактирования самого себя :) - person Linuxios; 07.06.2012
comment
Отлично :) Я написал это в спешке, поэтому сценарий может показаться не очень элегантным, но он просто работает! - person Hussein El Motayam; 07.06.2012
comment
Эй, @HusseinElMotayam, я только что попробовал ваш обходной путь, и он выдал мне следующие ошибки: Запуск инструмента: Format Vim: Предупреждение: вывод не в терминал Vim: Предупреждение: ввод не из терминала cat: .tempvimfile: нет такого файла или каталога rm : невозможно удалить `.tempvimfile': Нет такого файла или каталога Выход: 256 - person toobsco42; 10.11.2012
comment
@HusseinElMotayam Ты мой герой! ;) Я немного отредактирую ваш пост, чтобы исправить некоторые мелкие проблемы. - person naugtur; 28.01.2013
comment
Я хочу любить это, но это ломает код Python, делая отступы для строк, которые не должны быть отступами. - person Amanda; 12.02.2014
comment
Спасибо, это было действительно полезно! - person JoxTraex; 30.04.2014

Ubuntu 16.04 и Gedit

  1. Активируйте подключаемый модуль Внешние инструменты

    Редактировать настройки Плагины Внешние инструменты

  2. Управление внешними инструментами

    Инструменты Управление внешними инструментами

  3. Добавить инструмент

    • Click the + button at the bottom left of the Manage External Tools window
    • Вы можете переименовать новый инструмент во что угодно, например. JSON Formatter
    • Обратитесь к изображению ниже и настройте его соответствующим образом.

    Управление скриншотом внешних инструментов

person Aakash    schedule 25.02.2017
comment
Пожалуйста, будьте любезны, не могли бы вы вставить py-код в виде текста - person cmak.fr; 28.11.2019