将片段用于摄氏度"摄氏度"没有空格(字符串中的片段)

时间:2016-03-28 19:51:13

标签: code-snippets atom-editor

我决定写一个摄氏度的片段"摄氏度" - 这样我就可以轻松输入°C而无需使用字符映射。我想出了这个片段:

'*':
  'degrees Celsius':
    'prefix': 'C'
    'body': '°C'

我的想法是,如果我想输入°C,我可以输入C, Tab,然后自动替换它。但是,我遇到了一个问题。

我喜欢在数字旁边输入我的度数符号,而不留空格。但是当我输入123C, Tab, .时,结果不是123°C.而是123C .,因为代码段引擎显然会尝试匹配完整的123C而不仅仅是C(实际上事后看来是完全合理的。)

这种行为有什么办法吗?我发现我可以输入123 C, Tab,然后快速返回并删除空格,但这有点笨拙并且减慢了我的打字速度。有没有办法让Atom只匹配字符串的一部分?

注意:我知道建议的做法是在温度的数字和度数符号之间留一个空格。我仍然想知道我的问题的答案,因为(a)我宁愿忽略我个人写作中的最佳做法,而且(b)我想知道插入一个片段的一般情况 - 字符串。

1 个答案:

答案 0 :(得分:0)

我有两个解决方案,它不是使用片段而是你的init.coffee和一个击键来根据光标的当前位置执行RegEx替换。

解决方案#1 :映射键盘快捷键以插入字符

  1. 选择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')                
    
  2. 选择keymap.cson - >打开您的File Keymap...并将以下内容粘贴到文件的底部:

    'atom-text-editor:not([mini])':
      'ctrl-shift-space': 'custom:insert-centigrade'
    
  3. Ctrl - Alt - R

  4. 重新加载原子
  5. 现在打开一个新的编辑器窗口并输入以下文本:

    127
    
  6. 当光标仍在7 Ctrl - Shift - Space 的右侧时,您的文字现在应该替换为:

    127°
    
  7. 然后,您可以像往常一样继续输入C

  8. 解决方案#2 :映射键盘快捷键以转换字符代码

    1. 选择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
      
    2. 选择keymap.cson - >打开您的File Keymap...并将以下内容粘贴到文件的底部:

      'atom-text-editor:not([mini])':
        'ctrl-shift-space': 'custom:replace-centigrade'
      
    3. Ctrl - Alt - R

    4. 重新加载原子
    5. 现在打开一个新的编辑器窗口并输入以下文本:

      127C
      
    6. 当光标仍在c Ctrl - Shift - Space 的右侧时,您的文字现在应该替换为:

      127°C
      
    7. 我还创建了一个简短的动画,以防我的说明不够清楚:

      Animation of Init Script in situ