editor: Ctrl+; to insert inline code, Ctrl+J/K to scroll page
@ -64,6 +64,9 @@ Zoom in/out the page.
|
|||||||
Zoom in/out the page through the mouse scroll.
|
Zoom in/out the page through the mouse scroll.
|
||||||
- `Ctrl+0`
|
- `Ctrl+0`
|
||||||
Recover the page zoom factor to 100%.
|
Recover the page zoom factor to 100%.
|
||||||
|
- `Ctrl+J/K`
|
||||||
|
Scroll page down/up without changing cursor.
|
||||||
|
|
||||||
|
|
||||||
#### Text Editing
|
#### Text Editing
|
||||||
- `Ctrl+B`
|
- `Ctrl+B`
|
||||||
@ -72,8 +75,8 @@ Insert bold. Press `Ctrl+B` again to exit. Current selected text will be changed
|
|||||||
Insert italic. Press `Ctrl+I` again to exit. Current selected text will be changed to italic if exists.
|
Insert italic. Press `Ctrl+I` again to exit. Current selected text will be changed to italic if exists.
|
||||||
- `Ctrl+D`
|
- `Ctrl+D`
|
||||||
Insert strikethrought. Press `Ctrl+D` again to exit. Current selected text will be changed to strikethrough if exists.
|
Insert strikethrought. Press `Ctrl+D` again to exit. Current selected text will be changed to strikethrough if exists.
|
||||||
- `Ctrl+K`
|
- `Ctrl+;`
|
||||||
Insert inline code. Press `Ctrl+K` again to exit. Current selected text will be changed to inline code if exists.
|
Insert inline code. Press `Ctrl+;` again to exit. Current selected text will be changed to inline code if exists.
|
||||||
- `Ctrl+M`
|
- `Ctrl+M`
|
||||||
Insert fenced code block. Press `Ctrl+M` again to exit. Current selected text will be wrapped into a code block if exists.
|
Insert fenced code block. Press `Ctrl+M` again to exit. Current selected text will be wrapped into a code block if exists.
|
||||||
- `Ctrl+L`
|
- `Ctrl+L`
|
||||||
@ -213,9 +216,9 @@ Popup the attachments list of current note.
|
|||||||
- `X`
|
- `X`
|
||||||
Close current tab.
|
Close current tab.
|
||||||
- `J`
|
- `J`
|
||||||
Jump to next tab.
|
Jump to the next tab.
|
||||||
- `K`
|
- `K`
|
||||||
Jump to last tab.
|
Jump to the previous tab.
|
||||||
- `1` - `9`
|
- `1` - `9`
|
||||||
Number key 1 to 9 will jump to the tabs with corresponding sequence number.
|
Number key 1 to 9 will jump to the tabs with corresponding sequence number.
|
||||||
- `0`
|
- `0`
|
||||||
|
@ -64,6 +64,8 @@
|
|||||||
鼠标滚轮实现放大/缩小页面。
|
鼠标滚轮实现放大/缩小页面。
|
||||||
- `Ctrl+0`
|
- `Ctrl+0`
|
||||||
恢复页面大小为100%。
|
恢复页面大小为100%。
|
||||||
|
- `Ctrl+J/K`
|
||||||
|
向下/向上滚动页面,不会改变光标。
|
||||||
|
|
||||||
#### 文本编辑
|
#### 文本编辑
|
||||||
- `Ctrl+B`
|
- `Ctrl+B`
|
||||||
@ -72,8 +74,8 @@
|
|||||||
插入斜体;再次按`Ctrl+I`退出。如果已经选择文本,则将当前选择文本改为斜体。
|
插入斜体;再次按`Ctrl+I`退出。如果已经选择文本,则将当前选择文本改为斜体。
|
||||||
- `Ctrl+D`
|
- `Ctrl+D`
|
||||||
插入删除线;再次按`Ctrl+D`退出。如果已经选择文本,则将当前选择文本改为删除线。
|
插入删除线;再次按`Ctrl+D`退出。如果已经选择文本,则将当前选择文本改为删除线。
|
||||||
- `Ctrl+K`
|
- `Ctrl+;`
|
||||||
插入行内代码;再次按`Ctrl+K`退出。如果已经选择文本,则将当前选择文本改为行内代码。
|
插入行内代码;再次按`Ctrl+;`退出。如果已经选择文本,则将当前选择文本改为行内代码。
|
||||||
- `Ctrl+M`
|
- `Ctrl+M`
|
||||||
插入代码块;再次按`Ctrl+M`退出。如果已经选择文本,则将当前选择文本嵌入到代码块中。
|
插入代码块;再次按`Ctrl+M`退出。如果已经选择文本,则将当前选择文本嵌入到代码块中。
|
||||||
- `Ctrl+L`
|
- `Ctrl+L`
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
<g>
|
<g>
|
||||||
<title>Layer 1</title>
|
<title>Layer 1</title>
|
||||||
<text stroke="#000000" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " font-weight="bold" xml:space="preserve" text-anchor="middle" font-family="serif" font-size="24" id="svg_4" y="248.490375" x="-146.756839" stroke-width="0" fill="#000000">B</text>
|
<text stroke="#000000" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " font-weight="bold" xml:space="preserve" text-anchor="middle" font-family="sans-serif" font-size="24" id="svg_4" y="248.490375" x="-146.756839" stroke-width="0" fill="#000000">B</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 472 B After Width: | Height: | Size: 477 B |
@ -1,6 +1,6 @@
|
|||||||
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
<g>
|
<g>
|
||||||
<title>Layer 1</title>
|
<title>Layer 1</title>
|
||||||
<text style="cursor: move;" fill="#000000" stroke-width="0" x="-146.75684" y="248.49038" id="svg_4" font-size="24" font-family="serif" text-anchor="middle" xml:space="preserve" font-weight="normal" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " stroke="#000000">#</text>
|
<text style="cursor: move;" fill="#000000" stroke-width="0" x="-146.75684" y="248.49038" id="svg_4" font-size="24" font-family="sans-serif" text-anchor="middle" xml:space="preserve" font-weight="normal" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " stroke="#000000">#</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 472 B After Width: | Height: | Size: 477 B |
@ -2,6 +2,6 @@
|
|||||||
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
<g>
|
<g>
|
||||||
<title>Layer 1</title>
|
<title>Layer 1</title>
|
||||||
<text stroke="#000000" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " font-weight="normal" xml:space="preserve" text-anchor="middle" font-family="serif" font-size="24" id="svg_4" y="248.490375" x="-146.756839" stroke-width="0" fill="#000000">H</text>
|
<text style="cursor: move;" fill="#000000" stroke-width="0" x="-146.756839" y="248.490375" id="svg_4" font-size="24" font-family="sans-serif" text-anchor="middle" xml:space="preserve" font-weight="normal" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " stroke="#000000" font-style="normal">H</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 474 B After Width: | Height: | Size: 521 B |
@ -2,6 +2,6 @@
|
|||||||
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
<g>
|
<g>
|
||||||
<title>Layer 1</title>
|
<title>Layer 1</title>
|
||||||
<text style="cursor: move;" fill="#000000" stroke-width="0" x="-146.756839" y="248.490375" id="svg_4" font-size="24" font-family="serif" text-anchor="middle" xml:space="preserve" font-weight="normal" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " stroke="#000000" font-style="normal">K</text>
|
<text style="cursor: move;" fill="#000000" stroke-width="0" x="-146.756839" y="248.490375" id="svg_4" font-size="24" font-family="sans-serif" text-anchor="middle" xml:space="preserve" font-weight="normal" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " stroke="#000000" font-style="normal">C</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 516 B After Width: | Height: | Size: 521 B |
@ -2,6 +2,6 @@
|
|||||||
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
<g>
|
<g>
|
||||||
<title>Layer 1</title>
|
<title>Layer 1</title>
|
||||||
<text font-style="italic" stroke="#000000" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " font-weight="normal" xml:space="preserve" text-anchor="middle" font-family="serif" font-size="24" id="svg_4" y="248.490375" x="-146.756839" stroke-width="0" fill="#000000">I</text>
|
<text font-style="italic" stroke="#000000" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " font-weight="normal" xml:space="preserve" text-anchor="middle" font-family="sans-serif" font-size="24" id="svg_4" y="248.490375" x="-146.756839" stroke-width="0" fill="#000000">I</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
Before Width: | Height: | Size: 493 B After Width: | Height: | Size: 499 B |
@ -2,7 +2,7 @@
|
|||||||
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
<g>
|
<g>
|
||||||
<title>Layer 1</title>
|
<title>Layer 1</title>
|
||||||
<text fill="#000000" stroke-width="0" x="-146.756839" y="248.490375" id="svg_4" font-size="24" font-family="serif" text-anchor="middle" xml:space="preserve" font-weight="normal" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " stroke="#000000" font-style="normal">D</text>
|
<text fill="#000000" stroke-width="0" x="-146.756839" y="248.490375" id="svg_4" font-size="24" font-family="sans-serif" text-anchor="middle" xml:space="preserve" font-weight="normal" transform="matrix(16.72881317138672,0,0,16.72881317138672,2707.567729830742,-3759.186347961426) " stroke="#000000" font-style="normal">S</text>
|
||||||
<rect stroke="#000000" fill="#000000" stroke-width="5" x="91" y="262" width="325" height="21" id="svg_2" stroke-opacity="0"/>
|
<rect stroke="#000000" fill="#000000" stroke-width="5" x="91" y="262" width="325" height="21" id="svg_2" stroke-opacity="0"/>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 622 B After Width: | Height: | Size: 627 B |
@ -305,6 +305,7 @@ document.onkeydown = function(e) {
|
|||||||
shift = !!e.shiftKey;
|
shift = !!e.shiftKey;
|
||||||
ctrl = !!e.ctrlKey;
|
ctrl = !!e.ctrlKey;
|
||||||
meta = !!e.metaKey;
|
meta = !!e.metaKey;
|
||||||
|
var isCtrl = VOS == 'mac' ? e.metaKey : e.ctrlKey;
|
||||||
switch (key) {
|
switch (key) {
|
||||||
// Skip Ctrl, Shift, Alt, Supper.
|
// Skip Ctrl, Shift, Alt, Supper.
|
||||||
case 16:
|
case 16:
|
||||||
@ -349,7 +350,7 @@ document.onkeydown = function(e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 74: // J
|
case 74: // J
|
||||||
if (!ctrl && !shift && !meta) {
|
if (!shift && (!ctrl || isCtrl) && (!meta || isCtrl)) {
|
||||||
window.scrollBy(0, 100);
|
window.scrollBy(0, 100);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -358,7 +359,7 @@ document.onkeydown = function(e) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 75: // K
|
case 75: // K
|
||||||
if (!ctrl && !shift && !meta) {
|
if (!shift && (!ctrl || isCtrl) && (!meta || isCtrl)) {
|
||||||
window.scrollBy(0, -100);
|
window.scrollBy(0, -100);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,7 @@ enable_smart_im_in_vim_mode=true
|
|||||||
|
|
||||||
; Display an area besides the editor area to show line number
|
; Display an area besides the editor area to show line number
|
||||||
; 0 - None, 1 - Absolute, 2 - Relative, 3 - CodeBlock
|
; 0 - None, 1 - Absolute, 2 - Relative, 3 - CodeBlock
|
||||||
editor_line_number=0
|
editor_line_number=1
|
||||||
|
|
||||||
; Whether minimize to system tray when closing the app
|
; Whether minimize to system tray when closing the app
|
||||||
; -1: uninitialized, prompt user for the behavior
|
; -1: uninitialized, prompt user for the behavior
|
||||||
|
@ -777,6 +777,12 @@ bool VVim::handleKeyPressEvent(int key, int modifiers, int *p_autoIndentPos)
|
|||||||
|
|
||||||
processCommand(m_tokens);
|
processCommand(m_tokens);
|
||||||
}
|
}
|
||||||
|
} else if (VUtils::isControlModifierForVim(modifiers)) {
|
||||||
|
if (key == Qt::Key_J || key == Qt::Key_K) {
|
||||||
|
// Let it be handled outside.
|
||||||
|
resetState();
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -535,7 +535,7 @@ QToolBar *VMainWindow::initEditToolBar(QSize p_iconSize)
|
|||||||
m_editToolBar->addAction(strikethroughAct);
|
m_editToolBar->addAction(strikethroughAct);
|
||||||
|
|
||||||
QAction *inlineCodeAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/inline_code.svg"),
|
QAction *inlineCodeAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/inline_code.svg"),
|
||||||
tr("Inline Code\t%1").arg(VUtils::getShortcutText("Ctrl+K")),
|
tr("Inline Code\t%1").arg(VUtils::getShortcutText("Ctrl+;")),
|
||||||
this);
|
this);
|
||||||
inlineCodeAct->setStatusTip(tr("Insert inline-code text or change selected text to inline-coded"));
|
inlineCodeAct->setStatusTip(tr("Insert inline-code text or change selected text to inline-coded"));
|
||||||
connect(inlineCodeAct, &QAction::triggered,
|
connect(inlineCodeAct, &QAction::triggered,
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
|
#include <QScrollBar>
|
||||||
|
|
||||||
#include "vmdeditoperations.h"
|
#include "vmdeditoperations.h"
|
||||||
#include "dialog/vinsertimagedialog.h"
|
#include "dialog/vinsertimagedialog.h"
|
||||||
#include "dialog/vselectdialog.h"
|
#include "dialog/vselectdialog.h"
|
||||||
@ -333,7 +335,7 @@ bool VMdEditOperations::handleKeyPressEvent(QKeyEvent *p_event)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case Qt::Key_K:
|
case Qt::Key_Semicolon:
|
||||||
{
|
{
|
||||||
if (modifiers == Qt::ControlModifier) {
|
if (modifiers == Qt::ControlModifier) {
|
||||||
decorateInlineCode();
|
decorateInlineCode();
|
||||||
@ -403,6 +405,32 @@ bool VMdEditOperations::handleKeyPressEvent(QKeyEvent *p_event)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case Qt::Key_J:
|
||||||
|
{
|
||||||
|
if (VUtils::isControlModifierForVim(modifiers)) {
|
||||||
|
// Scroll down without changing cursor.
|
||||||
|
QScrollBar *vbar = m_editor->verticalScrollBarW();
|
||||||
|
if (vbar && (vbar->minimum() != vbar->maximum())) {
|
||||||
|
vbar->triggerAction(QAbstractSlider::SliderSingleStepAdd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case Qt::Key_K:
|
||||||
|
{
|
||||||
|
if (VUtils::isControlModifierForVim(modifiers)) {
|
||||||
|
// Scroll up without changing cursor.
|
||||||
|
QScrollBar *vbar = m_editor->verticalScrollBarW();
|
||||||
|
if (vbar && (vbar->minimum() != vbar->maximum())) {
|
||||||
|
vbar->triggerAction(QAbstractSlider::SliderSingleStepSub);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|