edamagitMagit for VSCode

联合创作 · 2023-09-28 02:35



edamagit


Magit for VSCode, inspired by the awesome original Magit.



UsageTutorialSettingsVim BindingsRoadmap




Keyboard driven Git interface



Sub hunk staging


(Theme: Dracula)


Usage



























VSCode Command Default shortcut
Magit Status alt+x g
Magit File Popup alt+x alt+g
Magit Dispatch alt+x ctrl+g
Magit Help (when in status view) ?

> Magit in VSCode Command palette will show you all available Magit actions from where you are.


Keybindings inside edamagit



Popup and dwim commands
A Cherry-pick b Branch c Commit
d Diff f Fetch F Pull
I Ignore l Log m Merge
M Remote P Push r Rebase
t Tag V Revert X Reset
y Show Refs z Stash shift+1 Run
shift+5 Worktree o Submodules shift+4 Process Log

Applying changes
a Apply s Stage u Unstage
v Reverse S Stage all U Unstage all
k Discard

Essential commands
g refresh current buffer
TAB toggle section at point
RET visit thing at point
shift+4 show git process view
q exit / close magit view

ctrl+j Move cursor to next entity
ctrl+k Move cursor to previous entity


[ See also the edamagit tutorial ]




Settings



  • Forge-enabled: Enable Forge functionality (show pull requests, issues, etc from e.g. Github)

  • Display-buffer-function: Choose which side for magit windows to open on.

  • Hide-status-sections: Hide listed sections from status view.

  • Quick-switch-enabled: Automatically confirm switch menu after enabling a switch (e.g. --force)


Vim support (VSCodeVim)


All edamagit keybindings are customizable using VSCode's built-in keybindings.json.


Below are bindings providing evil-magit / spacemacs like keybindings.


The negative bindings, e.g. -magit.discard-at-point for key k, remove the default edamagit bindings and the collisions with the Vim extension.


Open your keybindings.json and paste the following JSON snippet.


Bindings - keybindings.json

  {
"key": "tab",
"command": "extension.vim_tab",
"when": "editorFocus && vim.active && !inDebugRepl && vim.mode != 'Insert' && editorLangId != 'magit'"
},
{
"key": "tab",
"command": "-extension.vim_tab",
"when": "editorFocus && vim.active && !inDebugRepl && vim.mode != 'Insert'"
},
{
"key": "x",
"command": "magit.discard-at-point",
"when": "editorTextFocus && editorLangId == 'magit' && vim.mode =~ /^(?!SearchInProgressMode|CommandlineInProgress).*$/"
},
{
"key": "k",
"command": "-magit.discard-at-point"
},
{
"key": "-",
"command": "magit.reverse-at-point",
"when": "editorTextFocus && editorLangId == 'magit' && vim.mode =~ /^(?!SearchInProgressMode|CommandlineInProgress).*$/"
},
{
"key": "v",
"command": "-magit.reverse-at-point"
},
{
"key": "shift+-",
"command": "magit.reverting",
"when": "editorTextFocus && editorLangId == 'magit' && vim.mode =~ /^(?!SearchInProgressMode|CommandlineInProgress).*$/"
},
{
"key": "shift+v",
"command": "-magit.reverting"
},
{
"key": "shift+o",
"command": "magit.resetting",
"when": "editorTextFocus && editorLangId == 'magit' && vim.mode =~ /^(?!SearchInProgressMode|CommandlineInProgress).*$/"
},
{
"key": "shift+x",
"command": "-magit.resetting"
},
{
"key": "x",
"command": "-magit.reset-mixed"
},
{
"key": "ctrl+u x",
"command": "-magit.reset-hard"
}



Roadmap


Feature requests as well as issues are welcome


Interface



  • More interactivity in second-tier views (commit view, stash view, etc)

  • Config menus


Missing Git/Magit features



Missing Forge features

浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报