Rumah >alat pembangunan >atom >Melalui contoh operasi, lihat cara menambah kekunci pintasan tersuai dalam atom
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!
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:
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
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
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'
Bandingkan penerangan dalam keybindings:
Kita dapati bahawa ciri tatabahasa tetapan kekunci pintasan atom ialah:
'Selector': 'keystroke': 'Command'
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.
Lihat set kunci pintasan dalam tanda turun bahasa:
'atom-text-editor[data-grammar="text md"]': '*': 'markdown:strong-emphasis'
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())) } },
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 . 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('language-markdown.emphasisShortcuts')) { 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 'anyway'. 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('\n') === -1) { const wrappedText = this.wrapText(text, token) editor.setTextInBufferRange(range, wrappedText) didSomeWrapping = true } } } if (!didSomeWrapping) { event.abortKeyBinding() } return },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 emphasizeSelection
:addwords
addwords (event, token) { let didSomeWrapping = false if (atom.config.get('language-markdown.emphasisShortcuts')) { 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 'anyway'. 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('\n') === -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 }
在addCommands
中中添加三行关于 addwords
的设定,即可完成快捷键Command
的设定,当选中文本调用'markdown:header1'
,便会自动将文本设定为一级标题,修改后的addCommands
:
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))) this.subscriptions.add(atom.commands.add('atom-text-editor', 'markdown:header1', (event) => this.addwords(event, '#'))) this.subscriptions.add(atom.commands.add('atom-text-editor', 'markdown:header2', (event) => this.addwords(event, '##'))) this.subscriptions.add(atom.commands.add('atom-text-editor', 'markdown:header3', (event) => this.addwords(event, '###'))) if (atom.inDevMode()) { this.subscriptions.add(atom.commands.add('atom-workspace', 'markdown:compile-grammar-and-reload', () => this.compileGrammar())) } },
现在已经完成快捷键的设定了,然后就可以用我们在分析keybindings分析得的快捷键语法,在keymap文件中设定快捷键,如:
'atom-text-editor[data-grammar="text md"]': 'ctrl-1': 'markdown:header1' 'ctrl-2': 'markdown:header2' 'ctrl-3': 'markdown:header3'
ctrl+数字
的方法跟markdownpad2中的快捷键保持一致,但要注意这里只设计到三级标题,可以应对大部分的写作情况。当然,也可分析源码,自定义其他的功能函数,来实现更为复杂的命令。
另外一种设定快捷键的方式,是直接改写Melalui contoh operasi, lihat cara menambah kekunci pintasan tersuai dalam atom配置文件。在atom中,快捷键的自定义设定在keymaps.cson文件中设定,分析language-markdown发现,其存在keymaps中的文件夹,其中有一个cson文件,打开文件,发现果然是有关快捷键的设定:
'.platform-darwin atom-workspace': 'cmd-alt-ctrl-c': 'markdown:compile-grammar-and-reload''.platform-win32 atom-workspace': 'shift-alt-ctrl-c': 'markdown:compile-grammar-and-reload''.platform-linux atom-workspace': 'shift-alt-ctrl-c': 'markdown:compile-grammar-and-reload''.platform-darwin atom-text-editor[data-grammar="text md"]': 'cmd-shift-x': 'markdown:toggle-task''.platform-win32 atom-text-editor[data-grammar="text md"]': 'ctrl-shift-x': 'markdown:toggle-task''.platform-linux atom-text-editor[data-grammar="text md"]': 'ctrl-shift-x': 'markdown:toggle-task''atom-text-editor[data-grammar="text md"]': 'tab': 'markdown:indent-list-item' 'shift-tab': 'markdown:outdent-list-item' '_': 'markdown:emphasis' '*': 'markdown:strong-emphasis' '~': 'markdown:strike-through' '@': 'markdown:link' '!': 'markdown:image'
我们将上述的三条ctrl+数字
的命令粘贴在这里,重启atom后,发现成功添加了快捷键,在markdown测试也正常:
经过对比发现,在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!