комментирование и раскомментирование в gedit с помощью bash

Я новичок в баше. Я настраиваю свой инструмент gedit с помощью новой команды bash, чтобы комментировать и раскомментировать выбранные строки, используя решение, приведенное в этой ссылке Поскольку мой стиль комментирования - «%», я написал так по сравнению с исходным решением, приведенным в этой ссылке.

comment="%"

xargs -i -d\\\n echo $comment{} 

У меня есть два вопроса:

  1. когда я комментирую, как показано выше, выделенные строки комментируются, но курсор переходит на следующую строку из последней прокомментированной строки. Таким образом, оставляя пустое место, если существуют другие операторы после последней закомментированной строки. Как избежать перехода курсора на следующую строку.

  2. Команда bash для раскомментирования закомментированных строк, указанных в этой ссылке, удаляет выбранные строки, а не комментарии. как исправить для моего случая?

Спасибо.


person user_rak    schedule 14.08.2015    source источник


Ответы (1)


Я не уверен, почему приведенный вами пример использует xargs таким образом, как в комментариях, так и в частях без комментариев. Я попробовал простой sed, и он был намного лучше. Так что просто используйте для сценария комментария:

#!/bin/bash
sed 's/^/% /'

и для сценария без комментариев:

#!/bin/bash
sed 's/^% //'

У меня это сработало с версией 3.10.4 gedit на Ubuntu 14.04.


В противном случае восстановите xargs, чтобы убедиться, что в последней строке есть новая строка, и используйте 2 версии:

#!/bin/bash
xargs -i -d'\n' echo {} | sed 's/^/% /'

и

#!/bin/bash
xargs -i -d'\n' echo {} | sed 's/^% //'
person meuh    schedule 14.08.2015
comment
Обе эти команды удаляют мою последнюю строку. Любое исправление? Примечание! Я храню эти команды в своем диспетчере внешних инструментов в gedit. - person user_rak; 14.08.2015
comment
ты на какой ОС? что показывает echo -n a | sed 's/^/%/' | cat -vet;echo? У меня есть версия 3.10.4 gedit на Ubuntu 14.04. - person meuh; 14.08.2015
comment
Я использую gedit 2.28.4 и Gnome 2.28.2 Linux. Я получаю %a на терминале - person user_rak; 14.08.2015
comment
извините, я имел в виду, если вы введете команду в оболочке терминала, а не в сценариях gedit. - person meuh; 14.08.2015
comment
Разница в версиях должна учитывать проблему. Я не могу воспроизвести это. Я отредактировал свой ответ версией с xargs, которая может вам подойти. - person meuh; 14.08.2015
comment
xargs -i -d'\n' echo {} | sed 's/^% //' Удаляет ли это символ % для вас? Потому что он не удалил для меня, только новую строку в последней строке. - person user_rak; 14.08.2015
comment
да. Я использовал 's/^% //', предполагая, что после %. если у вас нет пробела, используйте 's/^%//'. Точно так же в сценарии комментария я добавил пробел после добавленного %. если вы не хотите, используйте вместо этого sed 's/^/%/'. Версия xargs всегда добавляет дополнительную строку в мою версию. Без xargs я получаю правильное редактирование, и я не теряю последнюю строку, как вы. - person meuh; 14.08.2015