Sublime Text 2, Python API'si olan genişletilebilir bir editördür . Yeni komutlar ( Eklentiler adı verilen ) oluşturabilir ve kullanıcı arayüzünden kullanılabilir hale getirebilirsiniz.
Temel filtreleme TextCommand eklentisi ekleme
Sublime Text 2'de, Araçlar »Yeni Eklenti'yi seçin ve aşağıdaki metni girin:
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)
Farklı kaydet filter.py
de~/Library/Application Support/Sublime Text 2/Packages/User
UI ile entegrasyon
Bu eklentiyi Düzen menüsüne eklemek için Tercihler… »Paketlere gözatın ve User
klasörü açın . Eğer bir dosya Main.sublime-menu
bulunmuyorsa, onu oluşturun. Bu dosyaya aşağıdaki metni ekleyin veya ayarlayın:
[
{
"id": "edit",
"children":
[
{"id": "wrap"},
{ "command": "filter" }
]
}
]
Bu, filter
komutun hemen altına komut çağrısını (aslında, eklenti çağrısı için filter
dönüştürülür ve menü etiketi için süzgeci ) ekler . Bunun nedeninin daha ayrıntılı bir açıklaması için buradaki 11. adıma bakın .FilterCommand().run(…)
wrap
Klavye kısayolu atamak için, dosyayı Default (OSX).sublime-keymap
OS X'te açıp düzenleyin veya diğer sistemler için eşdeğerini seçin ve aşağıdakini girin:
[
{
"keys": ["ctrl+shift+f"], "command": "filter"
}
]
Bu, ⌃⇧Fbu komuta kısayolu atar .
Komutun Komutlar Paletinde görünmesini sağlamak için Default.sublime-commands
, User
klasörde bir dosya oluşturmanız (veya var olanı düzenlemek) gerekir . Sözdizimi, az önce düzenlediğiniz menü dosyasına benzer:
[
{ "caption": "Filter Lines in File", "command": "filter" }
]
Birden çok girişin (küme parantezi içine alınmış) virgüllerle ayrılması gerekir.
Davranış ve UI entegrasyon ekran görüntüleri
Uygulandığı gibi komut, bir seçimin parçası olan tüm satırları (yalnızca seçilen bölümleri değil tüm satırları) veya seçim yoksa, giriş alanına girilen bir alt dizinin tüm arabelleğini filtreleyecektir. varsayılan, komut tetiklendikten sonra - muhtemelen işe yaramaz çok satırlı - panoya) 'dir. Kolayca destek düzenli ifadeler örneğin, ya da sadece hattından çıkan uzatılabilir değil belli bir ifade ile eşleşen.
Menü seçeneği
Komutlar palet girişi
Editör
Normal İfadeler için destek ekleme
Normal ifadeler için destek eklemek için aşağıdaki komut dosyalarını ve pasajları kullanın:
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"
}
]
İkinci bir eklenti komutu, Düzenli İfade Kullanarak Filtrele Filtre menüsü girişinin altına eklenir .
Default.sublime-commands
:
[
{ "caption": "Filter Lines in File", "command": "filter" },
{ "caption": "Filter Lines in File Using Regular Expression", "command": "filter_using_regular_expression" }
]