我决定写一个摄氏度的片段"摄氏度" - 这样我就可以轻松输入°C
而无需使用字符映射。我想出了这个片段:
'*':
'degrees Celsius':
'prefix': 'C'
'body': '°C'
我的想法是,如果我想输入°C
,我可以输入C, Tab
,然后自动替换它。但是,我遇到了一个问题。
我喜欢在数字旁边输入我的度数符号,而不留空格。但是当我输入123C, Tab, .
时,结果不是123°C.
而是123C .
,因为代码段引擎显然会尝试匹配完整的123C
而不仅仅是C
(实际上事后看来是完全合理的。)
这种行为有什么办法吗?我发现我可以输入123 C, Tab
,然后快速返回并删除空格,但这有点笨拙并且减慢了我的打字速度。有没有办法让Atom只匹配字符串的一部分?
注意:我知道建议的做法是在温度的数字和度数符号之间留一个空格。我仍然想知道我的问题的答案,因为(a)我宁愿忽略我个人写作中的最佳做法,而且(b)我想知道插入一个片段的一般情况 - 字符串。
答案 0 :(得分:0)
我有两个解决方案,它不是使用片段而是你的init.coffee
和一个击键来根据光标的当前位置执行RegEx替换。
选择init.coffee
- >打开您的File
Init Script...
并将以下内容粘贴到文件的底部:
atom.commands.add 'atom-text-editor',
'custom:insert-centigrade': ->
atom.commands.add 'atom-text-editor',
'custom:insert-foo': ->
atom.workspace.getActiveTextEditor()?.insertText('foo')
选择keymap.cson
- >打开您的File
Keymap...
并将以下内容粘贴到文件的底部:
'atom-text-editor:not([mini])':
'ctrl-shift-space': 'custom:insert-centigrade'
按 Ctrl - Alt - R
现在打开一个新的编辑器窗口并输入以下文本:
127
当光标仍在7
按 Ctrl - Shift - Space 的右侧时,您的文字现在应该替换为:
127°
然后,您可以像往常一样继续输入C
。
选择init.coffee
- >打开您的File
Init Script...
并将以下内容粘贴到文件的底部:
atom.commands.add 'atom-text-editor',
'custom:replace-centigrade': ->
if editor = atom.workspace.getActiveTextEditor()
editor.selectWordsContainingCursors()
for range in editor.getSelectedBufferRanges()
text = editor.buffer.getTextInRange range
replacement = text.replace /([0-9]+)C/, '$1°C'
editor.buffer.setTextInRange range, replacement
选择keymap.cson
- >打开您的File
Keymap...
并将以下内容粘贴到文件的底部:
'atom-text-editor:not([mini])':
'ctrl-shift-space': 'custom:replace-centigrade'
按 Ctrl - Alt - R
现在打开一个新的编辑器窗口并输入以下文本:
127C
当光标仍在c
按 Ctrl - Shift - Space 的右侧时,您的文字现在应该替换为:
127°C
我还创建了一个简短的动画,以防我的说明不够清楚: