web-dev-qa-db-ja.com

2つのgeditプラグインが衝突します。ショートカットキーを変更する方法、またはプラグインを有効/無効にする方法

Geditには GnomeのGeditプラグインページ の2つのプラグインがあります。

ただし、これらは両方とも同じショートカットキーを争います:Ctrl + PageUpおよびCtrl + PageDown

私は2つの可能な解決策を見ることができます、そしておそらくもっとあるかもしれません、、、(通常あります:)

最善の解決策は、マルチ編集のショートカットキーをShift + Ctrl + PageUpおよびShift + Ctrl + PageDownに変更することですが、ほとんどpython知識と方法逃げるのか.

(私にとって)最も簡単な方法は、別のショートカットキーを使用してオン/オフを切り替えることです。 (スクリプト全体ではなく)マルチ編集機能のオン/オフを切り替えるコマンドを知っています...基本的に、このオプションには、Geditプラグインのオン/オフを切り替えるコマンドが必要です。

どちらか、または両方(またはその他)のソリューションを高く評価します...

[〜#〜] update [〜#〜]コマンドラインを探していますコマンド(vs、メニューコマンド)、
および/またはマルチ編集の「修正」pythonスクリプト。

注:「ショートカットの編集」プラグインはマルチ編集プラグインを表示しません...(したがって、私はそれを行うことができません)

8
Peter.O

マルチ編集プラグインを有効/無効にする次のpythonスクリプト( download )を書きました。

#!/usr/env/python

import re
import commands

active_plugins = commands.getoutput("gconftool --get /apps/gedit-2/plugins/active-plugins")

r1 = re.compile(r'multi_edit')

if r1.search(active_plugins):
    # Disable multi-edit plugin
    active_plugins = re.sub("multi_edit,|,multi_edit","", active_plugins)

else:
    # Enable multi-edit plugin
    active_plugins = re.sub("]",",multi_edit]", active_plugins)

commands.getoutput("gconftool --set --type=list --list-type=string /apps/gedit-2/plugins/active-plugins "+active_plugins)

キーボードショートカットでマルチ編集を切り替えるには:

  1. スクリプトをtoggle-multi-edit.pyとしてホームフォルダーに保存します。

  2. System→Preferences→Keyboard Shortcutsを開きます。 Addをクリックし、Commandpython /home/<user>/toggle-multi-edit.pyを入れて、置き換えます<user>と実際のユーザー名。

    alt text

3
Isaiah

簡単です :)

有効化

  1. 編集>設定

  2. Pluginsセクションを見てください。

  3. 有効にするプラグインの名前の横にあるチェックボックスを選択します。

  4. 閉じるをクリックしてGeditを閉じてから、もう一度起動してください。

無効化

  1. 編集>設定

  2. Pluginsセクションを見てください。

  3. 有効にするプラグインの名前の横にあるチェックボックスを選択解除します。

  4. 閉じるをクリックしてGeditを閉じてから、もう一度起動してください。

2
Micheal Harker

最終的にgeditのプラグインへの参照を見つけた後、bashスクリプトを作成しました...

このスクリプトはgedit専用であるため、geditの外部ツールを使用して追加すると、選択したショートカットキーのスコープがgeditのみにローカライズされます。

#!/bin/bash
# Toggle gedit plugin ControlYourTabs  ON/OFF, with inverse switching for   
# Multi-Edit's "Columns Always Available" feature, which uses same shortcuts 
# ==========================================================================
cytab=controlyourtabs
plugins=$(gconftool-2 --get /apps/gedit-2/plugins/active-plugins)
#
if [[ "$plugins" =~ ^\[(.+,)*$cytab(,.+)*\]$ ]] ; then
    #
    # "Control Your Tabs" found in list... Disable it
    #  and enable "Multi Edit - Columns Always Available"  
    #
    if   [[ "$plugins" =~ ^.+\,$cytab(,.+)*\]$ ]] ; then plugins=${plugins/,${cytab}/}
    Elif [[ "$plugins" =~   ^\[$cytab\,.+$     ]] ; then plugins=${plugins/${cytab},/}
    Elif [[ "$plugins" =~   ^\[$cytab\]$       ]] ; then plugins=[]
    else echo "Logic Error in one of the regex patterns"; exit 1
    fi
    multi=true
else
    # "Control Your Tabs" NOT found in list... Enable it
    #  and disable "Multi Edit - Columns Always Available"  
    #
    plugins=${plugins%]},$cytab]
    multi=false
fi
#
gconftool-2 --set /apps/gedit-2/plugins/active-plugins --type=list --list-type=string "$plugins"
gconftool-2 --set /apps/gedit-2/plugins/multi_edit/columns_always_avail --type bool  $multi  

2
Peter.O

私は regex および ipython プラグインでこれをナビゲートしていましたが、どちらも実行したいです ctrlr。 「regexsearchinstance.py」(~/.local/share/gedit/plugins/regex_replace)で探し回ったところ、次のことがわかりました。

def create_menu_item(self):
        """
        Create a menu item in the "Tools" menu.
        """
        action = gtk.Action("RegexSearch", 
                _("Regular expression..."), 
                _("Search using regular expressions"), None)
        action.connect("activate", self.on_open_regex_dialog)

        action_group = gtk.ActionGroup("RegexSearchActions")
        action_group.add_action_with_accel(action, "<control>r")

        manager = self._window.get_ui_manager()
        manager.insert_action_group(action_group, -1)
        manager.add_ui_from_string(ui_str)

1行を次のように変更しました。

action_group.add_action_with_accel(action, "<control><shift>f")

そしてgeditを終了します。正規表現の検索がロードされるようになりました ctrlshfitf/usr/lib/gedit/plugins/ipython.pyに同等の行があります:

self._action_group.add_actions([('IPython', None,
        _('Run in IPython'), '<Control>r', _('Clear the document'),
        self.send_to_ipython)])

そのため、デフォルトで異なるショートカットを使用するようにプラグインを実際に編集する場合は、プラグインファイルで<Control>または<control>またはadd_actionを探ります。

0
Amanda