সাব্লাইম টেক্সট 2 পাইথন এপিআই সহ একটি এক্সটেনসিবল সম্পাদক । আপনি নতুন কমান্ড তৈরি করতে পারেন (যাকে প্লাগইন বলা হয় ) এবং এটি ইউআই থেকে উপলব্ধ করতে পারেন।
বেসিক ফিল্টারিং পাঠ্যকম্যান্ড প্লাগইন যুক্ত করা হচ্ছে
সাব্লাইম টেক্সট 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
ইউআইয়ের সাথে সংহতকরণ
সম্পাদনা মেনুতে এই প্লাগইনটি যুক্ত করতে , পছন্দগুলি নির্বাচন করুন ... »প্যাকেজগুলি ব্রাউজ করুন এবং User
ফোল্ডারটি খুলুন । নামক Main.sublime-menu
কোনও ফাইল যদি বিদ্যমান না থাকে তবে এটি তৈরি করুন। নিম্নলিখিত ফাইলটি সেই ফাইলটিতে যুক্ত করুন বা সেট করুন:
[
{
"id": "edit",
"children":
[
{"id": "wrap"},
{ "command": "filter" }
]
}
]
এটি filter
কমান্ড কলটি সন্নিবেশ করবে (মূলত, প্লাগইন কল এবং মেনু লেবেলের জন্য ফিল্টারfilter
রূপান্তরিত হয় ) কমান্ডের ঠিক নীচে । এটি কেন রয়েছে তার আরও বিশদ বিবরণের জন্য এখানে 11 তম পদক্ষেপ দেখুন ।FilterCommand().run(…)
wrap
একটি কীবোর্ড শর্টকাট বরাদ্দ করতে, Default (OSX).sublime-keymap
ওএস এক্স, বা অন্যান্য সিস্টেমের সমতুল্য ফাইলটি খুলুন এবং সম্পাদনা করুন এবং নিম্নলিখিতটি প্রবেশ করুন:
[
{
"keys": ["ctrl+shift+f"], "command": "filter"
}
]
এটি ⌃⇧Fএই কমান্ডের শর্টকাট বরাদ্দ করবে ।
কমান্ডস প্যালেটে কমান্ডটি প্রদর্শন করতে , আপনাকে ফোল্ডারে একটি ফাইল Default.sublime-commands
(বা বিদ্যমান একটি সম্পাদনা করুন) তৈরি করতে হবে User
। সিনট্যাক্সটি আপনি সদ্য সম্পাদিত মেনু ফাইলের মতো is
[
{ "caption": "Filter Lines in File", "command": "filter" }
]
একাধিক এন্ট্রি (কোঁকড়ানো বন্ধনী দ্বারা আবদ্ধ) কমা দ্বারা পৃথক করা প্রয়োজন।
আচরণ এবং UI ইন্টিগ্রেশন স্ক্রিনশট
কমান্ডটি প্রয়োগ করা হিসাবে, সমস্ত লাইনগুলিকে ফিল্টার করবে যা একটি নির্বাচনের অংশ (পুরো লাইনগুলি, কেবলমাত্র নির্বাচিত অংশ নয়), অথবা, যদি কোনও নির্বাচন উপস্থিত না থাকে তবে পুরো বাফারটি ইনপুট ক্ষেত্রে প্রবেশকারী একটি স্ট্রিংয়ের জন্য ( কমান্ড ট্রিগার হওয়ার পরে ডিফল্ট হ'ল - সম্ভবত বেহুদা মাল্টি-লাইন - ক্লিপবোর্ড)। এটি সহজেই বাড়ানো যেতে পারে যেমন নিয়মিত এক্সপ্রেশন সমর্থন করে, বা কেবল কোনও নির্দিষ্ট এক্সপ্রেশনের সাথে মেলে না এমন লাইনগুলি ছেড়ে যায় ।
মেনু আইটেম
প্যালেট এন্ট্রি কমান্ড
সম্পাদক
নিয়মিত এক্সপ্রেশন জন্য সমর্থন যোগ করা হচ্ছে
নিয়মিত প্রকাশের জন্য সমর্থন যোগ করতে পরিবর্তে নিম্নলিখিত স্ক্রিপ্টগুলি এবং স্নিপেট ব্যবহার করুন:
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" }
]