<p><strong>方法1</strong></p>
<p>添加一个<a href="https://flight-manual.atom.io/using-atom/sections/snippets/" rel="nofollow noreferrer">snippet</a>以自动完成<code>f-string</code>,如建议的<a href="https://discuss.atom.io/t/using-f-string-in-python-3-6/58091" rel="nofollow noreferrer">here</a>。在</p>
<p>您可以通过编辑位于<code>%USERPROFILE%/.atom</code>目录中的<code>snippets.cson</code>文件来添加代码段。也可以通过选择<code>Edit</code>菜单下的<code>Snippets...</code>进行编辑。在</p>
<p>编辑文件时,键入<code>snip</code>,然后按TAB</kbd>。它应该生成一个示例配置,如下所示:</p>
<pre><code>'.source.js':
'Snippet Name':
'prefix': 'Snippet Trigger'
'body': 'Hello World!'
</code></pre>
<p>将上述内容编辑为:</p>
^{pr2}$
<p>在这种方法中,<code>f-string</code>的自动完成只在键入<code>f"</code>后按TAB</kbd>来触发</p>
<p><2进近</strong></p>
<p>在atom编辑器的相应配置文件中添加以下行:</p>
<ol>
<li><code>init.coffee</code></li>
</ol>
<pre><code>atom.commands.add 'atom-text-editor', 'custom:insert-double-quotes', ->
# Get the active text editor instance
editor = atom.workspace.getActiveTextEditor()
# Get the character under the current position of the cursor
currentCharacterPrefix = editor.getLastCursor().getCurrentWordPrefix().slice(-1)
# Check if the character prefix is 'f'
if(currentCharacterPrefix == 'f')
# Insert double quotes with cursor position set in between the double quotes
snippetBody = '\"$1\"'
atom.packages.activePackages.snippets?.mainModule?.insert snippetBody
else
# If prefix is not 'f', then insert a double quote
# as if entering it manually in the text editor
# (so bracket-matcher does it's autocomplete job)
editor.insertText("\"")
</code></pre>
<ol start=“2”>
<li><code>keymap.cson</code></li>
</ol>
<pre><code># Set a key binding for double quote to trigger the command in the init script
'atom-text-editor[data-grammar="source python"]':
'\"': 'custom:insert-double-quotes'
</code></pre>
<p>配置文件<code>init.coffee</code>可以通过选择<code>Edit</code>菜单下的<code>Init Script...</code>选项来编辑,<code>keymap.cson</code>文件可以通过选择<code>Edit</code>菜单下的<code>Keymap...</code>选项进行编辑。这些配置文件位于<code>%USERPROFILE%/.atom</code>目录下。在</p>
<p>编辑配置文件后,关闭并重新打开atom编辑器。在编辑器中(对于python特定的文件),输入<code>f"</code>,它应该自动完成为<code>f""</code>。光标位置应该在两个双引号之间。在</p>
<p>这个方法的灵感来自于这个答案<a href="https://stackoverflow.com/a/39519726/10155936">here</a>。在</p>
<hr/>
<p>在<strong>方法2</strong>中,有另一种方法可以使括号匹配程序包认为它只是添加普通括号对。{<autocomplete>需要禁用</em>括号中的匹配项</p>
<p>向<code>init.coffee</code>配置文件添加以下行:</p>
<pre><code>atom.commands.add 'atom-text-editor', 'custom:insert-double-quotes', ->
# Get the active text editor instance
editor = atom.workspace.getActiveTextEditor()
# Get the character under the current position of the cursor
currentCharacterPrefix = editor.getLastCursor().getCurrentWordPrefix().slice(-1)
# Check if the character prefix is 'f'
if(currentCharacterPrefix == 'f')
# Fool the Bracket Matcher package by inserting a space
editor.insertText(" ")
# Insert a double quote for bracket matcher to handle auto-complete job
editor.insertText("\"")
# Set cursor position to remove the space
editor.getLastCursor().moveLeft(1)
editor.backspace()
# Set cursor position in between the double quotes
editor.getLastCursor().moveRight(1)
else
# If prefix is not 'f', then insert a double quote
# as if entering it manually in the text editor
# (so bracket-matcher does it's autocomplete job)
editor.insertText("\"")
</code></pre>