我试图创建SublimeText片段,其按CTRL + G后替换的话我有希腊字母输入。
例如:西格玛 - > CTRL + G - >σ
我可以让每个字母一个片段,但我感觉应该比较容易。 我不希望在整个文档扫描,只有两个字光标目前。
我试图创建SublimeText片段,其按CTRL + G后替换的话我有希腊字母输入。
例如:西格玛 - > CTRL + G - >σ
我可以让每个字母一个片段,但我感觉应该比较容易。 我不希望在整个文档扫描,只有两个字光标目前。
我一直在寻找类似的事情,只是偶然在包“希腊字母”由Arne路德维希(用于ST2 / ST3):
https://packagecontrol.io/packages/Greek%20Letters
它通过自动填充LaTeX的名字希腊字母。 自动完成通常配置成与所述tab
-键,例如:
tau<tab>
varphi<tab>
phi<tab>
你可以用插件做到这一点。 像下面的内容将单个光标位置工作。
import sublime_plugin
class GreekSubstitution(sublime_plugin.TextCommand):
greek_map = {}
greek_map["alpha"] = "α"
greek_map["beta"] = "ß"
greek_map["gamma"] = "Γ"
def run(self, edit):
view = self.view
cursors = view.sel()
cursor = cursors[0]
word_region = view.word(cursor)
word = view.substr(word_region)
if word in self.greek_map:
view.replace(edit, word_region, self.greek_map[word])
你会绑定到的命令是greek_substitution
。 很明显,你将需要展开列表之外的α,β,γ,但这应该让你在正确的方向开始。
我无法评论,所以我就张贴其他的答案:
是不是self.greek_map(word)
语法错误? 我假定这是一个简单的拼写错误。
我不知道这是否是在这个论坛的精神,但我提交了一个完整的解决方案,基于前面的答复的自由。
import sublime, sublime_plugin
import unicodedata
# NOTE: Unicode uses the spelling 'lamda'
class InsertSpecialSymbol(sublime_plugin.TextCommand):
# Configuration
DEBUG = True
# Symbol sets
Greek = { unicodedata.name(L).split()[-1].lower() : L for L in map(chr, range(945, 970)) }
Math = { 'multiply': '×', 'forall': '∀', 'element': '∈', 'angle': '∠', 'proportional': '∝', 'le': '≤', 'ge': '≥' }
replacements = Greek.copy()
replacements.update(Math)
def debug(self, string):
if InsertSpecialSymbol.DEBUG: print(string)
def run(self, edit):
''' Replaces the selected word with an appropriate symbol '''
view = self.view
for cursor in view.sel():
wordRegion = view.word(cursor)
word = view.substr(wordRegion)
symbol = self.replacements.get(word.lower(), None)
if symbol is not None:
view.replace(edit, wordRegion, symbol if word[0].islower() else symbol.upper())
else:
self.debug('Substitution not available for \'%s\'.' % word)
正如顺便说一句,因为创建地图手动将一直这么痛,我想指出的是,它是自动完成的(参见unicodedata.name)用短Python的片段。 我会根据要求张贴。
编辑例子中,你正在使用文本崇高3,它的API是不向后兼容假设。 如果你的编辑器依赖于Python 2中,我建议如下詹姆斯的答案。