Rumah > alat pembangunan > atom > teks badan

Melalui contoh operasi, lihat cara menambah kekunci pintasan tersuai dalam atom

青灯夜游
Lepaskan: 2022-03-08 20:04:10
ke hadapan
3176 orang telah melayarinya

Bagaimana untuk menambah kekunci pintasan tersuai dalam atom? Artikel ini akan mengambil turunkan bahasa sebagai contoh untuk memperkenalkan cara menetapkan tajuk berbilang peringkat penurunan harga dengan cepat. Saya harap ia akan membantu anda!

Melalui contoh operasi, lihat cara menambah kekunci pintasan tersuai dalam atom

Penerangan masalah

Apabila menggunakan Markdown untuk menulis nota kajian, saya pada mulanya memilih markdownpad 2 sebagai editor, tetapi markdownpad tidak sesuai untuk formula lateks dan tekstur. Ia sangat tidak mesra untuk digunakan, tetapi terdapat beberapa kekunci pintasan mesra, seperti ctrl 1 untuk menambah tajuk tahap 1 dengan cepat dan bar alat juga disediakan untuk teks tebal dengan cepat, memasukkan hiperpautan URL, dsb., yang lebih sesuai untuk orang baru. Walau bagaimanapun, markdownpad 2 tidak berfungsi dengan baik untuk lateks dan formula matematik lain, menampal gambar, dsb.

atom ialah editor penurunan harga yang sangat baik, (muat turun URL), menyokong berbilang format bahasa pengaturcaraan dan sumber terbuka Terdapat banyak pakej dan tema pihak ketiga untuk menjadikan editor lebih mesra pengguna. [Pengesyoran berkaitan: tutorial penggunaan atom]

Penurunan bahasa ialah pustaka peningkatan penurunan nilai yang mesti dipasang oleh atom, yang menetapkan satu siri pintasan, seperti:

Melalui contoh operasi, lihat cara menambah kekunci pintasan tersuai dalam atom
Tetapi tiada kekunci pintasan untuk menambah tajuk penurunan dalam atom dengan cepat. Untuk menyelesaikan masalah ini, anda perlu menyesuaikan kekunci pintasan. (PS: Pada masa siaran, saya tidak melihat mana-mana tutorial lain yang serupa) Ini adalah keseluruhan analisis dan idea operasi saya Jika pembaca tidak mempunyai masa, disyorkan untuk memuat turun terus fail yang saya ubah suai dan tulis ganti fail dengan nama yang sama dalam folder penandaan bahasa dan mulakan semula atom: pautan muat turun CSDN

analisis dan aplikasi peta kekunci pintasan tersuai

Fungsi kekunci pintasan. dalam atom sangat berkuasa, kekunci Pintasan yang sama melaksanakan fungsi yang berbeza pada tingkap atom yang berbeza, dan ia juga menyokong penyesuaian. Semak settings-keybindings

Melalui contoh operasi, lihat cara menambah kekunci pintasan tersuai dalam atom

dalam

atom dan anda boleh mendapati bahawa ctrl sepadan dengan 3 fungsi Dari sumber, ia sememangnya sama dalam pandangan yang berbeza. Fungsi yang berbeza dilaksanakan mengikut gesaan antara muka, kami menyalin sintaks kekunci pintasan dalam markdown-preview-plus, seperti berikut:

'.platform-win32 .markdown-preview-plus':
  'ctrl-+': 'markdown-preview-plus:zoom-in'
Salin selepas log masuk

Bandingkan penerangan dalam keybindings:
Melalui contoh operasi, lihat cara menambah kekunci pintasan tersuai dalam atom

Kita dapati bahawa ciri tatabahasa tetapan kekunci pintasan atom ialah:

'Selector':
  'keystroke': 'Command'
Salin selepas log masuk

keystroke ialah kekunci pintasan yang ingin kita tetapkan dan Command ialah arahan yang dilaksanakan oleh pintasan kekunci. Sumber menunjukkan dalam pakej mana kekunci pintasan itu, dan Selector ialah pemilih. Ia boleh dianggap serupa dengan pemilih CSS, yang menempatkan kedudukan unsur Dalam atom, ia mungkin mengenal pasti kedudukan konteks di mana kekunci pintasan berlaku. Memfokuskan pada analisis Command, rasanya ini merujuk kepada fungsi dalam pakej.

Ubah suai pakej tanda turun bahasa untuk melaksanakan tetapan pantas tajuk berbilang peringkat markdown dalam atom

Lihat set kunci pintasan dalam tanda turun bahasa:

'atom-text-editor[data-grammar="text md"]':
  '*': 'markdown:strong-emphasis'
Salin selepas log masuk

dalam pakej, cari kata kunci strong-emphasis dan cari berbilang rekod sepadan dalam 'main.js' fail lib dan cari kandungan berikut (baris 189-202):

  addCommands () {
    this.subscriptions.add(atom.commands.add('atom-text-editor', 'markdown:indent-list-item', (event) => this.indentListItem(event)))
    this.subscriptions.add(atom.commands.add('atom-text-editor', 'markdown:outdent-list-item', (event) => this.outdentListItem(event)))
    this.subscriptions.add(atom.commands.add('atom-text-editor', 'markdown:emphasis', (event) => this.emphasizeSelection(event, '_')))
    this.subscriptions.add(atom.commands.add('atom-text-editor', 'markdown:strong-emphasis', (event) => this.emphasizeSelection(event, '**')))
    this.subscriptions.add(atom.commands.add('atom-text-editor', 'markdown:strike-through', (event) => this.emphasizeSelection(event, '~~')))
    this.subscriptions.add(atom.commands.add('atom-text-editor', 'markdown:link', (event) => this.linkSelection(event)))
    this.subscriptions.add(atom.commands.add('atom-text-editor', 'markdown:image', (event) => this.linkSelection(event, true)))
    this.subscriptions.add(atom.commands.add('atom-text-editor', 'markdown:toggle-task', (event) => this.toggleTask(event)))
    if (atom.inDevMode()) {
      this.subscriptions.add(atom.commands.add('atom-workspace', 'markdown:compile-grammar-and-reload', () => this.compileGrammar()))
    }
  },
Salin selepas log masuk

Bahagian ini kod muncul Command dalam perihalan kekunci pintasan bagi pakej tanda turun bahasa yang ditunjukkan dalam penerangan masalah, dan didapati bahawa strong-emphasis memanggil fungsi emphasizeSelection dalam js. Memandangkan strong-emphasis merealisasikan fungsi paparan tebal teks, dan paparan tebal teks dalam penurunan nilai sebenarnya adalah untuk menambah ** sebelum dan selepas teks yang akan ditebalkan, dan menetapkan tajuk dalam penurunan nilai sebenarnya adalah untuk menambah berbilang < sebelum dan selepas teks 🎜>. Oleh itu, kita boleh menganalisis fungsi # untuk mencapai tujuan kita Fungsi emphasizeSelection adalah seperti berikut: emphasizeSelection

emphasizeSelection (event, token) {
    let didSomeWrapping = false
    if (atom.config.get(&#39;language-markdown.emphasisShortcuts&#39;)) {
      const editor = atom.workspace.getActiveTextEditor()
      if (!editor) return

      const ranges = this.getSelectedBufferRangesReversed(editor)
      for (const range of ranges) {
        const text = editor.getTextInBufferRange(range)
        /*
        Skip texts that contain a line-break, or are empty.
        Multi-line emphasis is not supported &#39;anyway&#39;.

        If afterwards not a single selection has been wrapped, cancel the event
        and insert the character as normal.

        If two cursors were found, but only one of them was a selection, and the
        other a normal cursor, then the normal cursor is ignored, and the single
        selection will be wrapped.
        */
        if (text.length !== 0 && text.indexOf(&#39;\n&#39;) === -1) {
          const wrappedText = this.wrapText(text, token)
          editor.setTextInBufferRange(range, wrappedText)
          didSomeWrapping = true
        }
      }
    }
    if (!didSomeWrapping) {
      event.abortKeyBinding()
    }
    return
  },
Salin selepas log masuk
Daripada kod sumber, kita tahu dari analisis bahawa di bawah penghakiman siri. daripada syarat: apabila terdapat teks yang dipilih, Jika ia adalah satu baris, tambah

sebelum dan selepas text, dan token adalah betul-betul token yang ditetapkan dalam fungsi perintah tambah. **Tetapi kerana penurunan harga menetapkan tajuk, terdapat ruang sebelum dan selepas teks, dan kemudian : # ditambah. # header1 #Jadi kita boleh membuat pengubahsuaian yang sangat mudah pada fungsi ini, iaitu, apabila memanggil , cuma tambah aksara ruang terus ke this.wrapText(text, token), seperti menyalin salinan kod text dan menamakannya emphasizeSelectionaddwords

  addwords (event, token) {
    let didSomeWrapping = false
    if (atom.config.get(&#39;language-markdown.emphasisShortcuts&#39;)) {
      const editor = atom.workspace.getActiveTextEditor()
      if (!editor) return

      const ranges = this.getSelectedBufferRangesReversed(editor)
      for (const range of ranges) {
        const text = editor.getTextInBufferRange(range)
        /*
        Skip texts that contain a line-break, or are empty.
        Multi-line emphasis is not supported &#39;anyway&#39;.

        If afterwards not a single selection has been wrapped, cancel the event
        and insert the character as normal.

        If two cursors were found, but only one of them was a selection, and the
        other a normal cursor, then the normal cursor is ignored, and the single
        selection will be wrapped.
        */
        if (text.length !== 0 && text.indexOf(&#39;\n&#39;) === -1) {
          //2021年2月4日 14:55:26,这里需要在text文本上前后加空格,不然,不能正常的设定1-3级标题
          const wrappedText = this.wrapText(" "+text+" ", token)
          editor.setTextInBufferRange(range, wrappedText)
          didSomeWrapping = true
        }
      }
    }
    if (!didSomeWrapping) {
      event.abortKeyBinding()
    }
    return
  }
Salin selepas log masuk

addCommands中中添加三行关于 addwords的设定,即可完成快捷键Command的设定,当选中文本调用&#39;markdown:header1&#39;,便会自动将文本设定为一级标题,修改后的addCommands

  addCommands () {
    this.subscriptions.add(atom.commands.add(&#39;atom-text-editor&#39;, &#39;markdown:indent-list-item&#39;, (event) => this.indentListItem(event)))
    this.subscriptions.add(atom.commands.add(&#39;atom-text-editor&#39;, &#39;markdown:outdent-list-item&#39;, (event) => this.outdentListItem(event)))
    this.subscriptions.add(atom.commands.add(&#39;atom-text-editor&#39;, &#39;markdown:emphasis&#39;, (event) => this.emphasizeSelection(event, &#39;_&#39;)))
    this.subscriptions.add(atom.commands.add(&#39;atom-text-editor&#39;, &#39;markdown:strong-emphasis&#39;, (event) => this.emphasizeSelection(event, &#39;**&#39;)))
    this.subscriptions.add(atom.commands.add(&#39;atom-text-editor&#39;, &#39;markdown:strike-through&#39;, (event) => this.emphasizeSelection(event, &#39;~~&#39;)))
    this.subscriptions.add(atom.commands.add(&#39;atom-text-editor&#39;, &#39;markdown:link&#39;, (event) => this.linkSelection(event)))
    this.subscriptions.add(atom.commands.add(&#39;atom-text-editor&#39;, &#39;markdown:image&#39;, (event) => this.linkSelection(event, true)))
    this.subscriptions.add(atom.commands.add(&#39;atom-text-editor&#39;, &#39;markdown:toggle-task&#39;, (event) => this.toggleTask(event)))
    this.subscriptions.add(atom.commands.add(&#39;atom-text-editor&#39;, &#39;markdown:header1&#39;, (event) => this.addwords(event, &#39;#&#39;)))
    this.subscriptions.add(atom.commands.add(&#39;atom-text-editor&#39;, &#39;markdown:header2&#39;, (event) => this.addwords(event, &#39;##&#39;)))
    this.subscriptions.add(atom.commands.add(&#39;atom-text-editor&#39;, &#39;markdown:header3&#39;, (event) => this.addwords(event, &#39;###&#39;)))

    if (atom.inDevMode()) {
      this.subscriptions.add(atom.commands.add(&#39;atom-workspace&#39;, &#39;markdown:compile-grammar-and-reload&#39;, () => this.compileGrammar()))
    }
  },
Salin selepas log masuk

现在已经完成快捷键的设定了,然后就可以用我们在分析keybindings分析得的快捷键语法,在keymap文件中设定快捷键,如:

&#39;atom-text-editor[data-grammar="text md"]&#39;:
  &#39;ctrl-1&#39;: &#39;markdown:header1&#39;
  &#39;ctrl-2&#39;: &#39;markdown:header2&#39;
  &#39;ctrl-3&#39;: &#39;markdown:header3&#39;
Salin selepas log masuk

ctrl+数字的方法跟markdownpad2中的快捷键保持一致,但要注意这里只设计到三级标题,可以应对大部分的写作情况。当然,也可分析源码,自定义其他的功能函数,来实现更为复杂的命令。

另外一种设定快捷键的方式,是直接改写Melalui contoh operasi, lihat cara menambah kekunci pintasan tersuai dalam atom配置文件。在atom中,快捷键的自定义设定在keymaps.cson文件中设定,分析language-markdown发现,其存在keymaps中的文件夹,其中有一个cson文件,打开文件,发现果然是有关快捷键的设定:

&#39;.platform-darwin atom-workspace&#39;:
  &#39;cmd-alt-ctrl-c&#39;: &#39;markdown:compile-grammar-and-reload&#39;&#39;.platform-win32 atom-workspace&#39;:
  &#39;shift-alt-ctrl-c&#39;: &#39;markdown:compile-grammar-and-reload&#39;&#39;.platform-linux atom-workspace&#39;:
  &#39;shift-alt-ctrl-c&#39;: &#39;markdown:compile-grammar-and-reload&#39;&#39;.platform-darwin atom-text-editor[data-grammar="text md"]&#39;:
  &#39;cmd-shift-x&#39;: &#39;markdown:toggle-task&#39;&#39;.platform-win32 atom-text-editor[data-grammar="text md"]&#39;:
  &#39;ctrl-shift-x&#39;: &#39;markdown:toggle-task&#39;&#39;.platform-linux atom-text-editor[data-grammar="text md"]&#39;:
  &#39;ctrl-shift-x&#39;: &#39;markdown:toggle-task&#39;&#39;atom-text-editor[data-grammar="text md"]&#39;:
  &#39;tab&#39;: &#39;markdown:indent-list-item&#39;
  &#39;shift-tab&#39;: &#39;markdown:outdent-list-item&#39;
  &#39;_&#39;: &#39;markdown:emphasis&#39;
  &#39;*&#39;: &#39;markdown:strong-emphasis&#39;
  &#39;~&#39;: &#39;markdown:strike-through&#39;
  &#39;@&#39;: &#39;markdown:link&#39;
  &#39;!&#39;: &#39;markdown:image&#39;
Salin selepas log masuk

我们将上述的三条ctrl+数字的命令粘贴在这里,重启atom后,发现成功添加了快捷键,在markdown测试也正常:

Melalui contoh operasi, lihat cara menambah kekunci pintasan tersuai dalam atom经过对比发现,在keymaps文件中重载快捷键,其Source为user,而在language-markdown中的cson中修改,其Source显示为language-markdown。显然后者看起来更统一,符合强迫症患者的需求…

【相关推荐:《atom教程》】

Atas ialah kandungan terperinci Melalui contoh operasi, lihat cara menambah kekunci pintasan tersuai dalam atom. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan