उदात्त पाठ 2 पायथन एपीआई के साथ एक एक्स्टेंसिबल संपादक है । आप नए कमांड बना सकते हैं (जिसे प्लगइन्स कहा जाता है ) और उन्हें यूआई से उपलब्ध करा सकते हैं।
बुनियादी छानने TextCommand प्लगइन जोड़ना
उदात्त पाठ 2 में, उपकरण »नया प्लगइन चुनें और निम्न पाठ दर्ज करें:
import sublime, sublime_plugin
def filter(v, e, needle):
# get non-empty selections
regions = [s for s in v.sel() if not s.empty()]
# if there's no non-empty selection, filter the whole document
if len(regions) == 0:
regions = [ sublime.Region(0, v.size()) ]
for region in reversed(regions):
lines = v.split_by_newlines(region)
for line in reversed(lines):
if not needle in v.substr(line):
v.erase(e, v.full_line(line))
class FilterCommand(sublime_plugin.TextCommand):
def run(self, edit):
def done(needle):
e = self.view.begin_edit()
filter(self.view, e, needle)
self.view.end_edit(e)
cb = sublime.get_clipboard()
sublime.active_window().show_input_panel("Filter file for lines containing: ", cb, done, None, None)
में के रूप filter.py
में सहेजें~/Library/Application Support/Sublime Text 2/Packages/User
UI के साथ एकीकरण
इस प्लगइन को एडिट मेनू में जोड़ने के लिए , प्राथमिकताएँ चुनें ... »पैकेज ब्राउज़ करें और User
फ़ोल्डर खोलें । यदि कोई फ़ाइल Main.sublime-menu
मौजूद नहीं है, तो इसे बनाएं। उस फ़ाइल में निम्न पाठ जोड़ें या सेट करें:
[
{
"id": "edit",
"children":
[
{"id": "wrap"},
{ "command": "filter" }
]
}
]
यह दर्ज करेंगे filter
कमांड कॉल (अनिवार्य रूप से, filter
करने के लिए तब्दील हो जाता है FilterCommand().run(…)
प्लगइन कॉल और के लिए फ़िल्टर मेनू लेबल के लिए) बस नीचे दिए गए wrap
आदेश। अधिक विस्तृत विवरण के लिए चरण 11 यहां देखें कि वह क्यों है।
कीबोर्ड शॉर्टकट असाइन करने के लिए, Default (OSX).sublime-keymap
OS X, या अन्य सिस्टम के समकक्ष फाइल को खोलें और संपादित करें , और निम्नलिखित दर्ज करें:
[
{
"keys": ["ctrl+shift+f"], "command": "filter"
}
]
यह ⌃⇧Fइस कमांड को शॉर्टकट असाइन करेगा ।
कमांड पैलेट में कमांड दिखाने के लिए , आपको फ़ोल्डर Default.sublime-commands
में एक फ़ाइल (या किसी मौजूदा को संपादित) नाम बनाने की आवश्यकता है User
। वाक्यविन्यास आपके द्वारा संपादित मेनू फ़ाइल के समान है:
[
{ "caption": "Filter Lines in File", "command": "filter" }
]
एकाधिक प्रविष्टियों (घुंघराले कोष्ठक द्वारा संलग्न) को अल्पविराम से अलग करने की आवश्यकता है।
व्यवहार और यूआई एकीकरण स्क्रीनशॉट
जैसा कि कार्यान्वित किया गया है, कमांड उन सभी लाइनों को फ़िल्टर करेगा जो चयन का हिस्सा हैं (संपूर्ण लाइनें, न कि केवल चयनित भाग), या, यदि कोई चयन मौजूद नहीं है, तो इनपुट फ़ील्ड में दर्ज किए जाने वाले सबस्टेशन के लिए संपूर्ण बफर, ( डिफ़ॉल्ट है - संभवतः बेकार मल्टी-लाइन - क्लिपबोर्ड) कमांड चालू होने के बाद। इसे आसानी से उदाहरण के लिए नियमित अभिव्यक्ति का समर्थन करने के लिए बढ़ाया जा सकता है, या केवल एक निश्चित अभिव्यक्ति से मेल नहीं खाती लाइनों को छोड़ दें ।
मेनू आइटम
पैलेट में प्रवेश करता है
संपादक
रेगुलर एक्सप्रेशन के लिए सपोर्ट जोड़ना
नियमित अभिव्यक्ति के लिए समर्थन जोड़ने के लिए, इसके बजाय निम्नलिखित स्क्रिप्ट और स्निपेट का उपयोग करें:
filter.py
:
import sublime, sublime_plugin, re
def matches(needle, haystack, is_re):
if is_re:
return re.match(needle, haystack)
else:
return (needle in haystack)
def filter(v, e, needle, is_re = False):
# get non-empty selections
regions = [s for s in v.sel() if not s.empty()]
# if there's no non-empty selection, filter the whole document
if len(regions) == 0:
regions = [ sublime.Region(0, v.size()) ]
for region in reversed(regions):
lines = v.split_by_newlines(region)
for line in reversed(lines):
if not matches(needle, v.substr(line), is_re):
v.erase(e, v.full_line(line))
class FilterCommand(sublime_plugin.TextCommand):
def run(self, edit):
def done(needle):
e = self.view.begin_edit()
filter(self.view, e, needle)
self.view.end_edit(e)
cb = sublime.get_clipboard()
sublime.active_window().show_input_panel("Filter file for lines containing: ", cb, done, None, None)
class FilterUsingRegularExpressionCommand(sublime_plugin.TextCommand):
def run(self, edit):
def done(needle):
e = self.view.begin_edit()
filter(self.view, e, needle, True)
self.view.end_edit(e)
cb = sublime.get_clipboard()
sublime.active_window().show_input_panel("Filter file for lines matching: ", cb, done, None, None)
Main.sublime-menu
:
[
{
"id": "edit",
"children":
[
{"id": "wrap"},
{ "command": "filter" },
{ "command": "filter_using_regular_expression" }
]
}
]
Default (OSX).sublime-keymap
:
[
{
"keys": ["ctrl+shift+f"], "command": "filter"
},
{
"keys": ["ctrl+shift+option+f"], "command": "filter_using_regular_expression"
}
]
फ़िल्टर मेनू प्रविष्टि के नीचे एक दूसरा प्लगइन कमांड, फ़िल्टर एक्सप्रेशन रेगुलर एक्सप्रेशन जोड़ा जाएगा ।
Default.sublime-commands
:
[
{ "caption": "Filter Lines in File", "command": "filter" },
{ "caption": "Filter Lines in File Using Regular Expression", "command": "filter_using_regular_expression" }
]