Sonkil
approvedby ohyoungpark
Provides Emacs-style text operations like Kill/Yank (Kill Ring), multi-cursor editing, and visual mark selection.
Sonkil - Emacs-style Text Operations for Obsidian
In Korean, 'Sonkil' means a helping hand with care or a delicate touch. This plugin aims to be a gentle assistant that respects your notes and provides help just where needed.
Features
Features
- Kill Ring: Storage system with 120 entry capacity
- Clipboard Sync: Cut/copied text automatically syncs with system clipboard
- Multi-cursor Kill Line: Cut text from multiple cursor positions and store as a single paragraph
- Visual Mark Selection: Selected text between mark and cursor is highlighted with a subtle background color
- Multi-cursor Yank: Paste text at multiple cursor positions simultaneously
- Status Bar Feedback: Shows current operation status in the status bar
Available Commands and Suggested Hotkeys
Important Note: Default hotkeys have been removed based on Obsidian's plugin guidelines to avoid potential conflicts with existing user configurations and ensure cross-OS compatibility. You can manually configure the hotkeys for Sonkil commands in Obsidian's settings (Settings > Hotkeys).
Here are the suggested key combinations based on the original defaults:
| Suggested Keystrokes | Command Name | Description |
|---|---|---|
Ctrl+Shift+ArrowDown | Sonkil: Add cursor down | Add a cursor on the line below |
Ctrl+Shift+ArrowUp | Sonkil: Add cursor up | Add a cursor on the line above |
Ctrl+g | Sonkil: Cancel mark and exit yank mode | Cancel current operation (mark, yank mode, multi-cursor) |
Alt+w | Sonkil: Copy region | Copy text between mark and cursor (Copy Region) |
Ctrl+k | Sonkil: Kill line | Cut text from cursor position to end of line (Kill Line) |
Ctrl+w | Sonkil: Kill region | Cut text between mark and cursor (Kill Region) |
Ctrl+l | Sonkil: Recenter editor view | Recenter editor view (cycles through Center/Top/Bottom) |
Ctrl+Space | Sonkil: Set mark | Set mark at current cursor position |
Ctrl+y | Sonkil: Yank | Paste most recent text from kill ring (Yank, imports from system clipboard if kill ring is empty) |
Alt+y | Sonkil: Yank pop | Cycle through previously cut text after yank (Yank Pop) |
Installation
For Regular Users
Method 1: Community Plugins (Recommended)
- Open Settings in Obsidian.
- Go to Community plugins and turn off Restricted Mode.
- Click the Browse button, search for “Sonkil”, then click Install, and after that, click Enable.
Method 2: Manual Installation
Alternatively, you can install manually:
- Go to the GitHub Releases page for this repository.
- Download the
main.js,manifest.json, andstyles.css(if present) files for the desired version. - Create a new folder named
obsidian-sonkilinside your Obsidian Vault's plugins folder (YourVault/.obsidian/plugins/). (You can find the Vault path in Obsidian's Settings > About tab.) - Copy the downloaded files into the newly created
obsidian-sonkilfolder. - Completely quit and restart Obsidian.
- Go to Obsidian Settings > Community Plugins, ensure Safe Mode is disabled, and enable the "Sonkil" plugin.
Configuring Hotkeys
Since default hotkeys are not provided due to Obsidian's plugin guidelines, you need to set them manually:
- Go to Settings (gear icon in the bottom-left corner).
- Navigate to the Hotkeys section in the left sidebar.
- In the search bar at the top of the Hotkeys section, type
Sonkil:to filter the commands provided by this plugin. - Find the command you want to configure (e.g.,
Sonkil: Set mark). - Click the
+icon next to the command name. - Press the key combination you want to assign (e.g.,
Ctrl+Space). You can use the combinations suggested in the table above or choose your own. - Repeat steps 4-6 for all the Sonkil commands you wish to use with hotkeys.
For Developers
Requirements
- Node.js 18 or higher
- npm 10 or higher
- Obsidian Desktop App
Development Environment Setup
- Clone the project:
git clone https://github.com/ohyoungpark/obsidian-sonkil
cd obsidian-sonkil
- Set Node.js version (using nvm):
nvm use
- Install dependencies:
npm install
- Configure development environment:
# Create .env file
echo "OBSIDIAN_PLUGIN_DIR=/path/to/your/obsidian/plugins/obsidian-sonkil" > .env
# Modify OBSIDIAN_PLUGIN_DIR in .env file to match your Obsidian plugin directory path
- Build and test:
# Build
npm run build
# Run tests
npm test
# Install in development mode (to local Obsidian vault)
npm run install-dev
Note:
.envfile is added to.gitignoreto prevent committing sensitive information- After installing in development mode, you need to restart Obsidian or reload the plugin for changes to take effect
License
This project is released into the public domain using The Unlicense. See the LICENSE file for details.
Translations
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.