您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Using VSCode shortcuts in CodeMirror (like HackMD, CodiMd etc ...)
// ==UserScript== // @icon https://hackmd.io/favicon.png // @name VSCode shortcuts in CodeMirror // @namespace http://github.com/cliffxzx // @version 0.1 // @description Using VSCode shortcuts in CodeMirror (like HackMD, CodiMd etc ...) // @author Cliff Chen // @match *://*/* // @grant none // ==/UserScript== 'use strict'; (function() { if (typeof window.CodeMirror === 'function') { var Pos = window.CodeMirror.Pos; const duplicateLines = (cm, down = false) => { cm.operation(function() { debugger; let selectionRange = cm.listSelections(); var rangeCount = selectionRange.length; for (var i = 0; i < rangeCount; i++) { var range = cm.listSelections()[i]; let text = ''; let start = Math.min(range.head.line, range.anchor.line); let end = Math.max(range.head.line, range.anchor.line); for(let j = start; j <= end; ++j) { text += cm.getLine(j) + "\n"; } if (down) { const rangeLineCount = end - start + 1; cm.replaceRange(text, Pos(end + 1, 0)); selectionRange[i].head.line += rangeLineCount; selectionRange[i].anchor.line += rangeLineCount; } else { cm.replaceRange(text, Pos(start, 0)); } } cm.setSelections(selectionRange); cm.scrollIntoView(); }); } window.editor.addKeyMap({ "Alt-Up": "swapLineUp", "Alt-Down": "swapLineDown", "Shift-Cmd-Alt-Up": "addCursorToPrevLine", "Shift-Cmd-Alt-Down": "addCursorToNextLine", "Cmd-K Cmd-0": "foldAll", "Shift-Alt-Up": (cm) => duplicateLines(cm), "Shift-Alt-Down": (cm) => duplicateLines(cm, true) }); } })();