ããã£âŠç§ã®ãšãã£ã¿ãããµããâŠïŒããŠãªã€ã³ã°ã«ãã«ãŠã±ããCursorã»VSCodeã®ã€ã±ã€ã±èšå®
ã¯ããã«
ã¡ãªãŒã¯ãªã¹ãã¹ð
2024å¹Žãæ®ãããããšããããšã§ãæåŸã«ãã¿èšäºãæçš¿ããŠå¹ŽãçŽããããšæããŸãã
çªç¶ã§ããããã€ã䜿ãéçºç°å¢ãã ãã£ãŠããŸããïŒ
èªåã¯ãäžéšã®äººãã¡ã«ã¯Vimãåžæããç±å¿ãªä¿¡åŸã ãšæãããŠããŸããããã åžæããã ãã§ã¯ãã®äººã«ãšã£ãŠå®çšçã§ã¯ãããŸããã
å人çãªèŠ³æž¬ã«åºã¥ããŸãããæå€ã«ãVimmerãããªãéçºè ã¯çµæ§ãã ãããèãã£ããããšãã£ã¿ã®ããŒããå€ããçšåºŠã ã£ããããã®ã§ãä»åã¯å€ãã®äººã䜿ã£ãŠããã§ãããCursorãšVSCodeã察象ãšããå®çšçãªã«ã¹ã¿ãã€ãºæ¹æ³ãã玹ä»ããŸãã
ãã ã®ã«ã¹ã¿ãã€ãºæ¹æ³ã§ã¯ãããŸãããããŠãªã€ã³ã°ã«ãã«ãŠã±ããã€ã±ã€ã±èšå®ã§ãã
ãæã
ãã®èšäºãæžãã«ããã£ãŠã®çµç·¯
ãšãã£ã¿å€é·
Cursorã«ç§»è¡ãããŸã§ã®ãšãã£ã¿å€é·ã¯ã
VSCode
â
Vim
â
VSCode VimïŒæ¡åŒµæ©èœïŒ
â
NeoVim
â
AstroNvim
â
ZedïŒAIæèŒåïŒ
â
AstroNvim
â
NeoVideïŒGUI ClientïŒ
ãã®ãããªæãã§å³åŸå·ŠåŸãããã®ã®ãæŠãVimããŒãã€ã³ããäžå¿ãšããéçºç°å¢ã䜿ã£ãŠããŸããã
ããããè¿å¹Žã§ã¯AIãçºéããŠãããã¡ãã£ãšåãŸã§ã¯ãã©ãŠã¶ã§ChatGPTãClaudeãéããŠãšãã£ã¿ãšè¡ã£ããæ¥ããããŠéçºããŠããŸããã
ã¢ãã³ãšãã£ã¿ã®ç»å Ž
ãããªäžã§é¢¯çœãšé¡ããã®ãCursorã§ãã
ä»ã§ããåœããåã«äœ¿ã£ãŠããŸãããåœæã¯ãšãã£ã¿ãšAIã®çµ±åãšããç¹ã§éåžžã«è¡æçã§ããã
Chatããã«ã䟿å©ã§ãããCopilot++ã®ã³ãŒãè£å®ã¯æ¬åœã«åªç§ã§ããã®ããã ãã«Cursorã䜿ã£ãŠãããšèšã£ãŠãéèšã§ã¯ãªããããã¹ã°ã¬ã¢ãã§ãã
å ããŠãVSCodeãããã©ãŒã¯ãããŠããã®ã§æ¢åã®ãšã³ã·ã¹ãã ãæŽ»ããããšããç¹ããå€ãã®éçºè ã®é¢å¿ãéããçç±ã®1ã€ã ãšæã£ãŠããŸãã
ã¢ãã³ãªãšãã£ã¿ãšããŠZedããããŸããããã¡ãã¯ç¬èªã®ãã©ã°ã€ã³ãåå¥ã«ã€ã³ã¹ããŒã«ããå¿ èŠãããã®ã§ãVSCodeããã®ç§»è¡ã¯äžã ããŒãã«ãé«ãã§ããã
Vimmerã®èŠæ©
ãããªãäž»èªãã§ããã§ãããVimã»NeoVimã¯ç¹ã«ã«ã¹ã¿ãã€ãºã®èªç±åºŠãé«ãã®ã§ãå€ãã®ãŠãŒã¶ãŒã¯ãã©ã°ã€ã³ããããŒãã€ã³ãããLSPãããšããããããªã¬ãªã¬èšå®ãäœã£ãŠ ããŒãã®ããããããããããã®ãã§ããã ãäœããã¡ã§ãã
ãããVimçæ œãšåŒã³ãŸãããã¹ãã«åºãŸãã
èªåããã®ãã¡ã®äžäººã§ã ãAIæ©èœã詊ããŠã¿ãããã©ãæåŒ·ã®ãšãã£ã¿ïŒèªç§°ïŒãããããããããªâŠâŠã ãšèè€ããŠããŸããã
ããããã®ã¯ãã§ãäžåºŠã¯Zedã«ç§»è¡ãããã®ã®ãè£å®åšãã®æåãæªããã£ããLSPã®åäœãéãã£ãããåœæã¯çããšããã«æãå±ããçµå±NeoVimã«åºæ»ãããçµéšããããŸãã
ãšã¯ãããéçºç°å¢ã転ã ãšããäžã§åç°å¢ããšã« ãããããããããããããªã ãªã©ã®ç¥èŠãæºãŸã£ãŠæ®µéçã«ãã©ãã·ã¥ã¢ããããŠããããããããŸã§ã®ç¥èŠã掻ãããŠã«ã¹ã¿ãã€ãºãããã° åçã«æåŒ·ã®ãšãã£ã¿å ã宿ããã®ã§ã¯ïŒãšèããéãè °ãäžããŠææŠããŠã¿ãŸããã
æçµãŽãŒã«
ãã ãããšå·å¿µã®ã«ã¹ã¿ãã€ãºã«ãããããã«ã¢ãã³ã§ã€ã±ã€ã±ãªCursorã«çãŸãå€ãããŸããã
ã«ã¹ã¿ãã€ãºå 容
ããããã¯å ·äœçãªã«ã¹ã¿ãã€ãºæ¹æ³ã«ã€ããŠè§£èª¬ããŠãããŸãã
åæãšããŠãèªåã®èšå®ã®å€ãã¯AstroNvimã«å€§ãã圱é¿ãåããŠããã®ã§ãZedãCursorãªã©ç°ãªããšãã£ã¿ã«ç§»è¡ããŠããåºæ¬çã«ã¯AstroNvimã®ããŒãã€ã³ãã£ã³ã°ãå ã«ã«ã¹ã¿ãã€ãºããŠããŸãã
ããããCursorã»VSCodeç¹æã®åé¡ããããçšåºŠå²ãåããå¿ èŠãªç®æãå°ã ããããããããŸã§ã âåçŸâ ã§ããããšã«æ³šæããŠãã ããã
æ¡åŒµæ©èœVimãå°å ¥ãã
ããã¯äººæš©ã§ãããŸã 䜿ã£ãŠããªã人ã¯é»ã£ãŠå ¥ããŸãããã
人ã«ãã£ãŠã¯åäœãéãããã§ãããå人çã«ã¯ãŽãªãŽãªã«ã«ã¹ã¿ãã€ãºããŠããããŸã§éãå°è±¡ã¯ç¡ãã§ãã
ã¡ãªã¿ã«é¡äŒŒã®æ¡åŒµæ©èœãšããŠVSCode NeoVimããããŸããããã¡ãã¯NeoVimã®èšå®ãäžéšæŽ»ããããã®ã®ãéšåçã«VSCodeåãã«èª¿æŽããå¿ èŠããã£ãããå°å ¥ããŠãèªåã®NeoVimãšå®å šã«åãæäœã«ã¯ãªããªãã£ãã®ã§äœ¿çšããŠããŸããã
ãããæ¢åã®NeoVimã®èšå®ã«äŸåããªããŠè¯ãã§ããã
Vimã«é¢ããããŒãã€ã³ããèšå®å 容ãªã©ã¯åŸã»ã©ç޹ä»ããŸãã
ããŒããå°å ¥ãã
ããã¯ã¶ã£ã¡ãããªãã§ãããã§ããèªåãäžçªãã³ã·ã§ã³ã®äžãããã€ãéžã¶ãšè¯ãã§ãããã
èªåã®å Žåã¯NeoVimãiTerm2ã§ãIcebergãæ°ã«å ¥ã£ãŠäœ¿ã£ãŠããã®ã§ãCursorã§ãå€ããã䜿çšããŠããŸãã

èæ¯ç»åãèšå®ãã
ããŒããå°å ¥ããã ãã§ãååã§ãããèæ¯ç»åãèšå®ãããšãªããè¯ãæãã«ãªããŸãã
èæ¯ç»åãèšå®ã§ããæ¡åŒµæ©èœã¯è²ã ãšååšããŸãããèªåã®ç°å¢ã§ã¯ä»¥äžã䜿çšããŠããŸãã
ã¢ãã¡ãŒã·ã§ã³ãä»ãã
ãšãã£ã¿å€é·ã§ãæžããŸããããçŽè¿ã§äœ¿çšããäžã§ãNeoVimã®GUIã¯ã©ã€ã¢ã³ãã§ããNeoVideã¯ãã«ãŒãœã«ç§»åãã¹ã¯ããŒã«ã«ãããããªã¢ãã¡ãŒã·ã§ã³ãä»ããŸãã

NeoVideã®è§Šãå¿å°ã¯ãšãŠãè¯ããã«ãŒãœã«ç§»åã«äŒŽãã¹ã¯ããŒã«ã«å¯ŸããŠããã«ããšã¢ãã¡ãŒã·ã§ã³ãä»ãã®ã§ãç¡é§ã«ç§»åããããªãã»ã©æ°ã«å ¥ã£ãŠããŸãã
以äžã®æ¡åŒµæ©èœãå°å ¥ãããšããã®ãããªã¢ãã¡ãŒã·ã§ã³ãCursorã§ãåçŸå¯èœã«ãªããŸãã
泚æç¹ãšããŠãäŸåããæ¡åŒµæ©èœã§ã¯ Custom CSS and JS Loader ãš Apc Customize UI++ ã®ã©ã¡ãããéžã¹ãŸãããå¿
ãåŸè
ã®æ¹ã«ããŠãã ããã
CursorãŠãŒã¶ãŒã®å Žåãåè
ãéžæããŠããŸããšæ£ããåäœããŸããã
詳ããèšå®æ¹æ³ã«é¢ããŠã¯æ¡åŒµæ©èœã®READMEãåç
§ããŠãã ããã
èŠãç®ãZedã£ãœããã
Zedã¯èŠãç®ãã¹ãããªããŠããŠã¢ãã³ã®æš©åã£ãŠæããããŠå人çã«ã¯å¥œãã§ãã
ãªã®ã§ãèŠãç®ã®èŠçŽ ã ãåãå
¥ããããšã«ããŸããã
ãšèšã£ãŠãè¶ ç°¡åã§ããã®æ¡åŒµæ©èœãå°å ¥ããã ãã§ãã
ã³ãã³ããã¬ãã

ãã¡ã€ã«ã¢ã€ã³ã³

ããã ãã§ãVSCodeèããè§£æ¶ãããŠãªã·ã£ã¬åºŠçäžããééããªãã§ãã
æ¡åŒµæ©èœLazyGit VSCodeãå°å ¥ãã
AstroNvimã§ã¯ããã©ã«ãã§LazyGitã䜿çšã§ã Leader(Space) + g + g ãå
¥åããã°ããããŒãã£ã³ã°ããã«ã§åŒã³åºããŸãã
Cursorã®ã¿ãŒããã«ã§çŽæ¥LazyGitãåŒã³åºãããšãå¯èœã§ãããæ¯åã¿ãŒããã«ã«ç§»åããŠæåãå ¥åããã®ãé¢åãããã§ãã
ããã§ã以äžã®æ¡åŒµæ©èœãå°å ¥ããŠåãããŒãã€ã³ããèšå®ããã°ãCursorã§ã䌌ãããã«åŒã³åºããããã«ãªããŸãã

LazyGité¢é£ã®æ¡åŒµæ©èœã¯ããã€ãååšããŸããããã¡ãã®æ¡åŒµæ©èœã¯LazyGitã®configãã¡ã€ã«ã®ãã¹ãèšå®ã§ããããæ¡åŒµæ©èœèªäœã«ããã€ãèšå®å¯èœãªé ç®ããããããã¡ããéžå®ããŸããã
äœè«ãšããŠãããã¯Cursorã»VSCodeäž¡æ¹ã«èšããããšã§ãããAstroNvimãŠãŒã¶ãŒã«ãšã£ãŠãããŒãã£ã³ã°ããã«ãååšããªãç¹ãäžçªèŠçã§ããã
æ¡åŒµæ©èœFindItFasterãå°å ¥ãã
å ã»ã©äœè«ã§èšããŸããããCursorã»VSCodeã«ã¯ãããŒãã£ã³ã°ããã«ïŒtelescopeïŒã䜿ã£ãæäœãã§ããªãã®ã§ãæ€çŽ¢åšãã¯ç¹ã«äžäŸ¿ã§ä»æ¹ãªãã§ãã
察ããŠãAstroNvimã§ã¯ä»¥äžã®æäœãå¯èœã§ãtelescope + fzfãçšããããšã§å¿«é©ãã€é«éãªæ€çŽ¢ãå®çŸããŠããŸãã
-
Leader(Space) + f + fã§ãã¡ã€ã«æ€çŽ¢ -
Leader(Space) + f + /ã§ãã¡ã€ã«å æ€çŽ¢ -
Leader(Space) + f + wã§å šäœæ€çŽ¢

ææ§æ€çŽ¢ãã§ããäžã«ãå³åŽã«éžæäžã®ãã¡ã€ã«ã®ãã¬ãã¥ãŒã衚瀺ãããŸãã
AstroNvimã«æ £ããŠããèªåã«ãšã£ãŠã¯å¿ é ã®ãããç§»è¡ã«èºèºããŠããæå€§ã®èŠå ã§ãã
ããã§è²ã ãšæ¢ãããšããããããŒãã£ã³ã°ããã«ã§ã¯ãªããã®ã®ãCursorã»VSCodeã§ãäŒŒãæ©èœãå®çŸãããã©ã°ã€ã³ãçºèŠããŸããã
ãã¡ã€ã«æ€çŽ¢

å šäœæ€çŽ¢

ãã¡ã€ã«å æ€çŽ¢ãã§ããŸãããããã¡ã€ã«æ€çŽ¢ã»å šäœæ€çŽ¢ã¯æŠãæºè¶³ã§ããä»äžãããªã®ã§ãåãããŒãã€ã³ãã§ãã®æ¡åŒµæ©èœãåŒã³åºããããã«èšå®ããŸããã
ãã¡ã€ã«å æ€çŽ¢ã«é¢ããŠã¯èªåã®fzfã³ãã³ããã¿ãŒããã«ã§å©ãããæœã諊ããŠVimæšæºã®æ€çŽ¢æ©èœã§æžãŸããŠããŸããïŒæ¬åœã¯æ¬²ããïŒ
æ¡åŒµæ©èœãåŒã³åºããéã®è¡šç€ºåŽ©ãã«å¯ŸåŠãã
ãã®æ¡åŒµæ©èœã®èšå®ã®1ã€ãšããŠãå®è¡æã«ã¿ãŒããã«ãæå€§é«ãã«æå®ã§ããŸãã
"find-it-faster.general.showMaximizedTerminal": true
ããããæã ã§ãããã¿ãŒããã«ã¯æå€§é«ãã«ãªã£ãŠãfzfãäžéå端ãªé«ãã§è¡šç€ºãããŠããŸã£ãããè²ã ãšäžäŸ¿ãªç¹ããããŸããã
ããã§ Multi-Command ãšããæ¡åŒµæ©èœãå°å
¥ããããšã§ãã®åé¡ãè§£æ¶ããŸããã
ãŸããsettings.json ã«ä»¥äžã®ãããªèšå®ãè¡ããŸãã
{
"find-it-faster.general.showMaximizedTerminal": false, // default
"multiCommand.commands": [
{
"command": "multiCommand.findFiles",
"interval": 220,
"sequence": [
"workbench.action.toggleMaximizedPanel",
"find-it-faster.findFiles"
]
},
{
"command": "multiCommand.findWithinFiles",
"interval": 220,
"sequence": [
"workbench.action.toggleMaximizedPanel",
"find-it-faster.findWithinFiles"
]
}
}
}
ããšã¯ä»»æã®ããŒãã€ã³ãããåŒã³åºãã ãã§ãã
{
"vim.normalModeKeyBindingsNonRecursive": [
// ãã¡ã€ã«æ€çŽ¢
{
"before": ["<Leader>", "f", "f"],
"commands": ["multiCommand.findFiles"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
// å
šäœæ€çŽ¢
{
"before": ["<Leader>", "f", "w"],
"commands": ["multiCommand.findWithinFiles"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
]
}
ãã£ãŠããããšã¯ã·ã³ãã«ã§ã220ms é
ãããŠé 次å®è¡ãããããšã§ toggleMaximizedPanel ã確å®ã«å®è¡ããŠããFindItFasterãåŒã³åºãããã«ããŠããŸãã
ããã«ãããèšå®åãšæ¯ã¹ãŠç¢ºå®ã«å®è¡ã§ããããã«ãªã£ãã®ã§ã¹ãã¬ã¹ãæžããŸããã
åå®è¡æã®ã¿ãŒããã«ã®é«ããããããåé¡ã«å¯ŸåŠãã
ããã¯å³å¯ã«åé¡ãç¹å®ããããã§ã¯ãããŸããããã¿ãŒããã«ãšãã®æ¡åŒµæ©èœã䜵çšããå ŽåãäœããããããªæåããããŸããã
- åé¡ãªãðââïžïŒæ©èœå®è¡ â ãšãã£ã¿ã«ãã©ãŒã«ã¹ â æ©èœå®è¡ïŒé£ç¶ã§å®è¡ïŒ
- åé¡ããð ââïžïŒæ©èœå®è¡ â ã¿ãŒããã«ã«ãã©ãŒã«ã¹ããŠæå€§å â ãšãã£ã¿ã«ãã©ãŒã«ã¹ â æ©èœå®è¡
äžåºŠã¿ãŒããã«ã«ç§»åããŠäœããã®æäœãè¡ã£ãäžã§æ¡åŒµæ©èœãå®è¡ãããšã toggleMaximizedPanel ã true ã«ãé¢ããããã¿ãŒããã«ã®é«ããäœãç¶æ
ã§fzfãå®è¡ãããŠããŸããŸãã
è²ã ãšè©ŠããŸããããçµå±ãžã£ã¹ããªè§£æ±ºæ¹æ³ãèŠã€ãããâŠâŠ
ããã§ãCursorå ã®ã¿ãŒããã«ã¯FindItFasterå°çšã«ããŠãã¿ãŒããã«ã¢ããªã®Warpãšäœµçšããããšã§å¯ŸåŠããŸããã
2ç»é¢ä»¥äžã䜿çšããåæã«ãªããŸããã ãçæ¹ã§Cursorã»ããçæ¹ã¯Warpã ã®ãããªäœ¿ãæ¹ããããšãããæå€ã«ãå¿«é©ã ã£ãã®ã§æè¿ã¯ãã®æ§æã§äœæ¥ããŠããŸãã
å®ã¯éå»ã«è©Šããããšããã£ãŠãNeoVim + Tmuxãšã®çžæ§ã®æªãããäžåºŠã¯ææŸããŠããŸããããã¿ãŒããã«ãšããŠã®ã¿äœ¿çšããåã«ã¯ååå®çšçã§è¯ããšæããŸãã
iTerm2ãWezTermãããã¯ã»ã¯ãããŸãããäœããèŠãç®ãäžçªãããããªã®ã§éžã³ãŸããã
çŸåšã®ãã¡ã€ã«ã®ãã¹ãååŸå¯èœã«ãã
å ã ã¯NeoVim + Copilotã ã£ãããšããããå©äŸ¿æ§ãèæ ®ããŠçŸåšã®ãã¡ã€ã«ã®ãã¹ãååŸã§ããããã«èšå®ããŠããŸããã
äžæ¹ã§ãCursorã¯äœããšåªç§ãªã®ã§åºæ¬çã«ã¯å°ããªãã§ãããè£å®ããããã¡ã€ã«ãã¹ãæã ç°ãªãå Žåããã£ãããCursorãšWarpã䜵çšãããããWarpäžã§ãã¹ããå®è¡ããéã«éœåºŠãã¡ã€ã«ãã¹ãæå®ããã®ã¯å€§å€ã§ãã
ããã§ãçŸåšãã©ãŒã«ã¹ããŠãããã¡ã€ã«ã®ãã¹ãç°¡åã«ååŸã§ããããã«ã以äžã®æ¡åŒµæ©èœãå°å ¥ããŠèšå®ããŠããŸãã
{
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["<Leader>", "a"],
"commands": ["currentFilePath.copy"]
}
]
}
ãã®ããã«èšå®ããããšã§ãããŒãã«ã¢ãŒãæã« Leader(Space) + a ãå
¥åããã ãã§ãã«ãã¹ãã³ããŒã§ããããã«ãªããã倧å€äŸ¿å©ã§ãã
èšå®ãã¡ã€ã«
Vimåšãã®æäœèšå®ãäžèšã§ç޹ä»ããæ¡åŒµæ©èœã«é¢ããããŒãã€ã³ããªã©ã¯èª¬æãåºãããããªããªãã®ã§ã以äžã® settings.jsonã»keybindings.json ãåã
åèã«ããŠã¿ãŠãã ããã
settings.json
{
"terminal.integrated.showExitAlert": false,
"zenMode.restore": true,
"zenMode.hideLineNumbers": false,
"zenMode.fullScreen": true,
"zenMode.hideActivityBar": true,
"zenMode.showTabs": "multiple",
"zenMode.centerLayout": false,
"window.commandCenter": true,
"editor.fontFamily": "'UDEV Gothic 35NF', Menlo, Monaco, 'Courier New', monospace",
"explorer.compactFolders": false,
"workbench.colorTheme": "Iceberg",
"workbench.editor.revealIfOpen": false,
"animations.Scrolling": "Fade",
"animations.CursorAnimation": true,
"apc.imports": [
"file://${userHome}/.cursor/extensions/brandonkirbyson.vscode-animations-2.0.4/dist/updateHandler.js"
],
"find-it-faster.findWithinFiles.fuzzRipgrepQuery": true,
"find-it-faster.general.killTerminalAfterUse": true,
"lazygit-vscode.configPath": "/your/config/path",
"lazygit-vscode.autoMaximizeWindow": true,
"go.lintTool": "golangci-lint",
"go.lintFlags": ["--config=${workspaceFolder}/.golangci.yaml", "--fast"],
"multiCommand.commands": [
{
"command": "multiCommand.formatAndFix",
"sequence": ["editor.action.formatDocument", "multiCommand.formatTs"]
},
{
"command": "multiCommand.formatTs",
"sequence": [
{
"command": "eslint.executeAutofix",
"when": "resourceLangId == javascript || resourceLangId == typescript || resourceLangId == json"
}
]
},
{
"command": "multiCommand.findFiles",
"interval": 220,
"sequence": [
"workbench.action.toggleMaximizedPanel",
"find-it-faster.findFiles"
]
},
{
"command": "multiCommand.findWithinFiles",
"interval": 220,
"sequence": [
"workbench.action.toggleMaximizedPanel",
"find-it-faster.findWithinFiles"
]
},
// èªäœã®æ€çŽ¢çšã¹ã¯ãªãããå®è¡ããããã®ã³ãã³ã
{
"command": "multiCommand.findCurrentFile",
"interval": 220,
"sequence": [
"workbench.action.toggleMaximizedPanel",
{
"command": "workbench.action.terminal.newWithProfile",
"args": {
"profileName": "zsh",
"splitActiveTerminal": true,
"splitTerminalDimension": {
"split": "maxSize"
}
}
},
{
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "buffer-search ${file}; exit\n" }
}
]
}
],
"vim.leader": "<space>",
"vim.useSystemClipboard": true,
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["u"],
"commands": [
{
"command": "undo"
}
]
},
{
"before": ["<C-r>"],
"commands": [
{
"command": "redo"
}
]
},
{
"before": ["<Leader>", "w"],
"after": [],
"commands": [
{
"command": "workbench.action.files.save",
"args": []
}
]
},
{
"before": ["<Leader>", "q"],
"after": [],
"commands": [
{
"command": "workbench.action.closeActiveEditor",
"args": []
}
]
},
{
"before": ["<leader>", "c"],
"commands": ["workbench.action.closeActiveEditor"]
},
{
"before": ["<Leader>", "a"],
"commands": ["currentFilePath.copy"]
},
{
"before": ["<Leader>", "."],
"after": ["$"]
},
{
"before": ["<Leader>", ","],
"after": ["^"]
},
{
"before": ["<Leader>", "m"],
"after": ["%"]
},
// ã¿ãéã§ã®ç§»å
{
"before": ["<Leader>", "["],
"commands": ["workbench.action.previousEditor"]
},
{
"before": ["<Leader>", "]"],
"commands": ["workbench.action.nextEditor"]
},
// ãã¡ã€ã«ããªãŒãžã®ç§»å
{
"before": ["<Leader>", "o"],
"commands": ["workbench.action.focusSideBar"]
},
// ãã¡ã€ã«ããªãŒã®éé
{
"before": ["<Leader>", "e"],
"commands": ["workbench.action.toggleSidebarVisibility"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
// ãã¡ã€ã«æ€çŽ¢
{
"before": ["<Leader>", "f", "f"],
"commands": ["multiCommand.findFiles"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
// å
šäœæ€çŽ¢
{
"before": ["<Leader>", "f", "w"],
"commands": ["multiCommand.findWithinFiles"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
// ãã¡ã€ã«å
æ€çŽ¢
{
"before": ["<Leader>", "f", "/"],
"commands": ["multiCommand.findCurrentFile"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
// lsp
{
"before": ["<Leader>", "l", "f"],
"commands": ["multiCommand.formatAndFix"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
{
"before": ["<Leader>", "l", "a"],
"commands": ["editor.action.quickFix"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
{
"before": ["<Leader>", "l", "r"],
"commands": ["editor.action.rename"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
{
"before": ["<Leader>", "l", "d"],
"commands": ["editor.action.showHover"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
// git
{
"before": ["<Leader>", "g", "l"],
"commands": ["gitlens.showQuickFileHistory"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
{
"before": ["<Leader>", "g", "g"],
"commands": ["lazygit-vscode.toggle"],
"when": [
"editorFocus && !editorTextFocus && vim.mode == 'Normal'",
"workbench.action.focusActiveEditorGroup"
]
}
],
"vim.insertModeKeyBindingsNonRecursive": [
{
"before": ["j", "j"],
"after": ["<Esc>"]
}
],
"vim.visualModeKeyBindingsNonRecursive": [
{
"before": ["<Leader>", "j"],
"after": ["<Esc>"]
},
{
"before": ["<Leader>", "."],
"after": ["$"]
},
{
"before": ["<Leader>", ","],
"after": ["^"]
},
{
"before": ["<Leader>", "m"],
"after": ["%"]
},
{
"before": [">"],
"commands": ["editor.action.indentLines"]
},
{
"before": ["<"],
"commands": ["editor.action.outdentLines"]
},
{
"before": ["p"],
"after": ["\"", "_", "d", "P"]
},
// ãã¡ã€ã«æ€çŽ¢
{
"before": ["<Leader>", "f", "f"],
"commands": ["find-it-faster.findFiles"],
"when": ["editorFocus && vim.mode == 'Normal'"]
},
// å
šäœæ€çŽ¢
{
"before": ["<Leader>", "f", "w"],
"commands": ["find-it-faster.findWithinFiles"],
"when": ["editorFocus && vim.mode == 'Normal'"]
}
],
"cursor.cpp.enablePartialAccepts": true,
"background.windowBackgrounds": [
"your/background/image/path"
],
"editor.defaultFormatter": "esbenp.prettier-vscode",
"typescript.updateImportsOnFileMove.enabled": "always",
"cursor.chat.premiumChatAutoScrollWhenAtBottom": true,
"apc.electron": {
"titleBarStyle": "hiddenInset",
"trafficLightPosition": {
"x": 7,
"y": 5
}
},
"apc.font.family": "Zed Sans",
"apc.stylesheet": {
".quick-input-widget": {
"position": "absolute !important",
"top": "200px !important",
"left": "50%",
"border-radius": "10px",
"border": "1px solid var(--vscode-textSeparator-foreground) !important",
"box-shadow": "0 0 60px 0 rgba(0,0,0,0.2) !important"
},
// left title bar (controls)
".titlebar-left": {
"max-width": "70px !important"
},
// center title bar
".titlebar-center": {
"margin": "0 !important"
},
// arrow buttons
".action-item.menu-entry": {
"display": "none !important"
},
// whole title bar command center container
".action-item.command-center-center": {
"background-color": "transparent !important",
"border": "none !important",
"width": "fit-content !important"
},
// field
".quick-input-header": {
"padding": "0 !important"
},
// input element container
".quick-input-header > .quick-input-and-message .monaco-inputbox": {
"border-radius": "10px 10px 0 0 !important"
},
// actual input element
".quick-input-header > .quick-input-and-message > .quick-input-filter > .quick-input-box input": {
"padding": "8px 10px !important"
},
// list of results
".quick-input-list > .monaco-list > .monaco-scrollable-element": {
"padding": "2px !important"
},
// status bar set height
"div:has(> .statusbar)": {
"height": "25px !important",
"top": "auto !important",
"bottom": "0 !important"
},
".statusbar": {
"height": "25px !important"
},
// hides search icon
".codicon.codicon-search.search-icon": {
"display": "none !important"
},
// empty editor background
".editor-group-container.empty.active": {
"background-color": "var(--vscode-statusBar-background)"
},
"div:has(> .tabs-and-actions-container.tabs-border-bottom.empty)": {
"background-color": "var(--vscode-statusBar-background) !important"
}
},
"workbench.iconTheme": "ayu-mirage-zed",
"javascript.updateImportsOnFileMove.enabled": "always",
"editor.smoothScrolling": true,
"terminal.integrated.smoothScrolling": true,
"editor.cursorBlinking": "smooth",
"workbench.list.smoothScrolling": true,
"animations.Install-Method": "Apc Customize UI++",
"update.mode": "manual",
"[go]": {
"editor.defaultFormatter": "golang.go"
},
"editor.formatOnPaste": true
}
keybindings.json
[
//----------------------------------------------------------
// äœãéããŠããªãæã®èšå®
//----------------------------------------------------------
// ãã¡ã€ã«æ€çŽ¢
{
"key": "space f f",
"command": "multiCommand.findFile",
"when": "!editorFocus && !terminalFocus && !inputFocus"
},
// å
šäœæ€çŽ¢
{
"key": "space f w",
"command": "multiCommand.findWithinFiles",
"when": "!editorFocus && !terminalFocus && !inputFocus"
},
// ãµã€ãããŒã衚瀺
{
"key": "space e",
"command": "workbench.action.focusSideBar",
"when": "!editorFocus && !terminalFocus && !inputFocus"
},
// ãµã€ãããŒãžã®ãã©ãŒã«ã¹
{
"key": "space o",
"command": "workbench.action.focusSideBar",
"when": "!editorFocus && !terminalFocus && !inputFocus"
},
// Lazygitã®èµ·å
{
"key": "space g g",
"command": "lazygit-vscode.toggle",
"when": "!editorFocus && !terminalFocus && !inputFocus"
},
//----------------------------------------------------------
// ãšãã£ã¿ã«ãã©ãŒã«ã¹ããŠããæã®èšå®
//----------------------------------------------------------
// ãšãã£ã¿ã®æå€§å
{
"key": "ctrl+t z",
"command": "workbench.action.togglePanel",
"when": "editorFocus && vim.mode == 'Normal'"
},
// AIãã£ãããžã®ãã©ãŒã«ã¹
{
"key": "ctrl+t l",
"command": "aichat.focuschatpaneaction",
"when": "editorFocus && vim.mode == 'Normal'"
},
// ã¿ãŒããã«ãžã®ãã©ãŒã«ã¹
// {
// "key": "ctrl+t n",
// "command": "workbench.action.terminal.focus"
// },
{
"key": "ctrl+t n",
"command": "runCommands",
"args": {
"commands": ["workbench.action.terminal.focus"]
},
"when": "editorFocus && vim.mode == 'Normal' && activePanel"
},
{
"key": "ctrl+t n",
"command": "runCommands",
"args": {
"commands": [
"workbench.action.terminal.focus",
"workbench.action.toggleMaximizedPanel"
]
},
"when": "editorFocus && vim.mode == 'Normal' && !activePanel"
},
// ãšãã£ã¿ã®çžŠåå²
{
"key": "s v",
"command": "workbench.action.splitEditor",
"when": "editorTextFocus && vim.mode == 'Normal'"
},
// ãšãã£ã¿ã®æšªåå²
{
"key": "s h",
"command": "workbench.action.splitEditorDown",
"when": "editorTextFocus && vim.mode == 'Normal'"
},
// ã¢ã¯ãã£ããšãã£ã¿ã®éé
{
"key": "ctrl+t x",
"command": "workbench.action.closeActiveEditor",
"when": "editorFocus && vim.mode == 'Normal'"
},
// ãã¡ã€ã«ããªãŒãžã®ãã©ãŒã«ã¹ïŒå·Šãšãã£ã¿ã°ã«ãŒãïŒ
{
"key": "ctrl+w h",
"command": "workbench.action.focusSideBar",
"when": "editorFocus && vim.mode == 'Normal' && activeEditorGroupIndex == 1"
},
// ãšãã£ã¿éã®ç§»åïŒå·ŠãžïŒ
{
"key": "ctrl+w h",
"command": "workbench.action.focusLeftGroup",
"when": "editorFocus && vim.mode == 'Normal' && activeEditorGroupIndex > 1"
},
// ãšãã£ã¿éã®ç§»åïŒå³ãžïŒ
{
"key": "ctrl+w l",
"command": "workbench.action.focusRightGroup",
"when": "editorFocus && vim.mode == 'Normal' && activeEditorGroupIndex >= 1"
},
// ãšãã£ã¿éã®ç§»åïŒäžãžïŒ
{
"key": "ctrl+w j",
"command": "workbench.action.focusBelowGroup",
"when": "editorFocus && vim.mode == 'Normal'"
},
// ãšãã£ã¿éã®ç§»åïŒäžãžïŒ
{
"key": "ctrl+w k",
"command": "workbench.action.focusAboveGroup",
"when": "editorFocus && vim.mode == 'Normal'"
},
// Neovimã®æ¿å
¥ã¢ãŒãããã®ãšã¹ã±ãŒã
{
"command": "vscode-neovim.compositeEscape1",
"key": "j",
"when": "neovim.mode == insert && editorTextFocus && !inputFocus",
"args": "j"
},
// ãããŒæ
å ±ã®è¡šç€º
{
"key": "shift+k",
"command": "editor.action.showHover",
"when": "editorFocus && vim.mode == 'Normal'"
},
//----------------------------------------------------------
// AIãã£ããã«ãã©ãŒã«ã¹ããŠããæã®èšå®
//----------------------------------------------------------
// ãšãã£ã¿ãžã®ç§»å
{
"key": "ctrl+t h",
"command": "workbench.action.focusActiveEditorGroup",
"when": "workbench.panel.aichat.view.visible && !inputFocus"
},
// ã¿ãŒããã«ãžã®ç§»å
{
"key": "ctrl+t n",
"command": "workbench.action.terminal.focus",
"when": "workbench.panel.aichat.view.visible && !inputFocus"
},
// AIãã£ããã®ãµã€ãããŒãéãã
{
"key": "ctrl+t x",
"command": "aichat.close-sidebar",
"when": "workbench.panel.aichat.view.visible && !inputFocus"
},
//----------------------------------------------------------
// ãµã€ãããŒã«ãã©ãŒã«ã¹ããŠããæã®èšå®
//----------------------------------------------------------
// ãªã¹ãå
ã§äžãžç§»å
{
"key": "j",
"command": "list.focusDown",
"when": "listFocus && !inputFocus"
},
// ãªã¹ãå
ã§äžãžç§»å
{
"key": "k",
"command": "list.focusUp",
"when": "listFocus && !inputFocus"
},
// ãªã¹ãå
ã§æãããã¿
{
"key": "h",
"command": "list.collapse",
"when": "listFocus && !inputFocus"
},
// ãªã¹ãå
ã§éžæ
{
"key": "l",
"command": "list.select",
"when": "listFocus && !inputFocus"
},
// ãšãã£ã¿ã°ã«ãŒããžã®ãã©ãŒã«ã¹
{
"key": "space o",
"command": "workbench.action.focusActiveEditorGroup",
"when": "listFocus && !inputFocus"
},
// ãµã€ãããŒã®è¡šç€ºåæ¿
{
"key": "space e",
"command": "workbench.action.toggleSidebarVisibility",
"when": "listFocus && !inputFocus"
},
// æåã®ãšãã£ã¿ã°ã«ãŒããžã®ãã©ãŒã«ã¹
{
"key": "ctrl+w l",
"command": "workbench.action.focusFirstEditorGroup",
"when": "listFocus && !inputFocus"
},
// æ°ãããã¡ã€ã«ã®äœæ
{
"key": "a",
"command": "explorer.newFile",
"when": "listFocus && !inputFocus"
},
// æ°ãããã©ã«ãã®äœæ
{
"key": "shift+a",
"command": "explorer.newFolder",
"when": "listFocus && !inputFocus"
},
// ãã¡ã€ã«ã»ãã£ã¬ã¯ããªã®ãªããŒã
{
"key": "r",
"command": "renameFile",
"when": "listFocus && !inputFocus"
},
// ãã¡ã€ã«ã»ãã£ã¬ã¯ããªã®åé€
{
"key": "d",
"command": "deleteFile",
"when": "listFocus && !inputFocus"
},
// é ããã¡ã€ã«ã»ãã£ã¬ã¯ããªã®è¡šç€ºåæ¿
{
"key": "shift+h",
"command": "toggleexcludedfiles.toggle",
"when": "listFocus && !inputFocus"
},
// ãšã¯ã¹ãããŒã©ãŒã®æŽæ°
{
"key": "shift+r",
"command": "workbench.files.action.refreshFilesExplorer",
"when": "listFocus && !inputFocus"
},
// ãšãã£ã¿ãžã®ç§»å
{
"key": "ctrl+t l",
"command": "workbench.action.focusActiveEditorGroup",
"when": "listFocus && !inputFocus"
},
//----------------------------------------------------------
// ã¿ãŒããã«ã«ãã©ãŒã«ã¹ããŠããæã®èšå®
//----------------------------------------------------------
// ãšãã£ã¿ãžã®ç§»å
// {
// "key": "ctrl+t p",
// "command": "workbench.action.focusActiveEditorGroup",
// "when": "terminalFocus"
// },
// {
// "key": "ctrl+t p",
// "command": "runCommands",
// "args": {
// "commands": [
// "workbench.action.focusActiveEditorGroup",
// "workbench.action.focusActiveEditorGroup"
// ]
// },
// "when": "terminalFocus"
// },
{
"key": "ctrl+t p",
"command": "runCommands",
"args": {
"commands": [
"workbench.action.focusActiveEditorGroup",
"workbench.action.focusActiveEditorGroup",
"workbench.action.togglePanel"
]
},
// "when": "terminalFocus && panelMaximized"
"when": "terminalFocus"
},
// ã¿ãŒããã«ã®åå²
{
"key": "ctrl+t shift+\\",
"command": "workbench.action.terminal.split",
"when": "terminalFocus"
},
// æ°ããã¿ãŒããã«ã®äœæ
{
"key": "ctrl+t c",
"command": "workbench.action.terminal.new",
"when": "terminalFocus"
},
// ã¿ãŒããã«éã§ã®ç§»åïŒå·ŠãžïŒ
{
"key": "ctrl+t h",
"command": "workbench.action.terminal.focusPreviousPane",
"when": "terminalFocus"
},
// ã¿ãŒããã«éã§ã®ç§»åïŒå³ãžïŒ
{
"key": "ctrl+t l",
"command": "workbench.action.terminal.focusNextPane",
"when": "terminalFocus"
},
// ã¿ãŒããã«ãžã®ã€ã³ããã¯ã¹å¥ãã©ãŒã«ã¹
{
"key": "ctrl+t 1",
"command": "workbench.action.terminal.focusAtIndex1"
},
{
"key": "ctrl+t 2",
"command": "workbench.action.terminal.focusAtIndex2"
},
{
"key": "ctrl+t 3",
"command": "workbench.action.terminal.focusAtIndex3"
},
{
"key": "ctrl+t 4",
"command": "workbench.action.terminal.focusAtIndex4"
},
{
"key": "ctrl+t 5",
"command": "workbench.action.terminal.focusAtIndex5"
},
// ã¿ãŒããã«ã®æå€§å
{
"key": "ctrl+t z",
"command": "workbench.action.toggleMaximizedPanel",
"when": "terminalFocus"
},
// ã¿ãŒããã«ã®éé
{
"key": "ctrl+t x",
"command": "workbench.action.terminal.detachSession",
"when": "terminalFocus"
}
]
ãããã«
ãšããããšã§ã AstroNvim + NeoVide + Zed + VSCode + AIïŒCursorïŒ ãšããã«ãªã¹ã§ãã¡ã©ãªãšãã£ã¿ãç¡äºå®æããŸããã
èŠãç®ãšã·ïŒæ©èœæ§ãšã·ïŒ ãªã®ã§ãããŠãªã€ã³ã°ã«ãã«ãŠã±ããããšééããªãã§ãããã
ãšã¯ããæŠãæºè¶³ããŠãããã®ã®ããã¡ã€ã«å æ€çŽ¢ãã§ããªãã£ãããæã ããŠã¹æäœãå¿ èŠãªç®æããã£ãããšããŸã ãŸã æ¹åã§ããç¹ã¯æããããŸãã
ã¿ãªãããã€ã±ã€ã±ãªèšå®ãåèã«ã㊠ããŒãã®ããããããããããã®ãã§ããã ãäœã£ãŠã¿ãŠã¯ãããã§ããããïŒ
Discussion