Logo
Published on

Cash VIM Setting

VS Code

VSCodeVim

{
  "vim.useSystemClipboard": false,
  "editor.lineNumbers": "relative",
  "vim.foldfix": true,
  "vim.normalModeKeyBindingsNonRecursive": [
    {
      "before": ["h", "h"],
      "after": ["^"]
    },
    {
      "before": [" "],
      "after": ["leader", "leader", "s"]
    },
    {
      "before": ["leader", " "],
      "after": ["leader", "leader", "leader", "b", "d", "w"]
    },
    {
      "before": ["l", "l"],
      "after": ["$"]
    },
    {
      "before": ["<leader>", "%"],
      "commands": [
        {
          "command": "editor.emmet.action.matchTag"
        }
      ]
    },
    {
      "before": [",", "p"],
      "after": ["\"", "0", "p"]
    },
    {
      "before": ["z", "n"],
      "commands": [
        {
          "command": "editor.action.marker.nextInFiles"
        }
      ]
    },
    {
      "before": ["z", "p"],
      "commands": [
        {
          "command": "editor.action.marker.prevInFiles"
        }
      ]
    }
  ],
  "vim.insertModeKeyBindings": [
    {
      "before": ["j", "j"],
      "after": ["<Esc>"]
    },
    {
      "before": ["z", ",", "p"],
      "after": ["<esc>", "\"", "0", "p"]
    }
  ],
  "vim.easymotion": true,
  "vim.surround": true,
  "vim.highlightedyank.enable": true,
  "vim.mouseSelectionGoesIntoVisualMode": false,
  "vim.smartRelativeLine": true
}

JetBrains (IdeaVim)

IdeaVim

" default leader key is \
" M->cmd, A->option, C->control
" <ESC> - escape, <BS> - backspace

set scrolloff=5
set smartcase
set autoindent
set smartindent
set surround
set ideajoin
set visualbell
set showmatch
set commentary
set ReplaceWithRegister
set hlsearch
set showmode
set ideamarks
set highlightedyank
set incsearch
set showcmd
set matchit
set rnu
set easymotion

let g:highlightedyank_highlight_in_visual = 0
let g:highlightedyank_highlight_duration = 3000

" === EasyMotion ===
nnoremap <Space> :<C-u>action AceAction<CR>

" === 搜尋 ===
nnoremap <leader>/ :nohls<CR>

" === 設定重新載入 ===
nnoremap zso :source ~/.ideavimrc<CR>

" === 測試相關 ===
imap <F1> <Esc>ma?\@Test<CR>V/{<CR>%y`ap/public<CR>$Bzz:nohls<CR>
nnoremap <F1> ma?@Test<CR>V/{<CR>%y`ap/public<CR>$Bzz:nohls<CR>

" === 執行 ===
nmap zra zz:action RearrangeCode<CR>zz:action ReformatCode<CR>zz:action Rerun<CR>
imap zra <Esc>zz:action RearrangeCode<CR>zz:action ReformatCode<CR>zz:action Rerun<CR>

" === Git ===
nmap zgc zz:action CheckinProject<CR>

" === 導航 ===
nmap zf :action GotoDeclaration<CR>
imap zf <Esc>:action GotoDeclaration<CR>
nmap zn :action GotoNextError<CR>
nmap ,m :action FileStructurePopup<CR>
nmap ,t :action GotoFile<CR>
nmap ,g :action Generate<CR>
nmap ,c :action NewClass<CR>
nmap [[ <Action>(MethodUp)
nmap ]] <Action>(MethodDown)

" === Rider Test 重構 移入到 SetUp ===

nmap zrs dd?class<CR>jo[SetUp]<CR>public<Space>void<Space>SetUp(){<CR>}<Esc>P:action ReformatCode<CR>:nohls<CR>
nmap zrx dd?SetUp<CR>jp:action ReformatCode<CR>:nohls<CR>

" === 重構 ===
nmap zrr :action RenameElement<CR>
nmap zrm :action ExtractFunction<CR>
vmap zrm :action ExtractFunction<CR>
vmap M :action ExtractFunction<CR>
map zri :action Inline<CR>
map zrv :action IntroduceVariable<CR>
map zrf :action IntroduceProperty<CR>
map zrc :action IntroduceConstant<CR>
map zrp :action IntroduceParameter<CR>
nmap zsp vi":action IntroduceParameter<CR>
vmap P :action IntroduceParameter<CR>
nmap zro :action Move<CR>

" === 移動 ===
nnoremap hh ^
nnoremap ll $
vnoremap hh ^
vnoremap ll $

" === Insert Mode 快捷鍵 ===
imap jj <Esc>
imap zl <End>
imap zd <Esc>dd
imap z; <Esc>A;
imap z, <Esc>A,
nmap z; A;<Esc>
nmap z, A,<Esc>

" === 選取快捷鍵 ===
nmap z. vi}
nmap z) vi)
nmap z} vi}
nmap z> vit
nmap c> cit
nmap z" vi"
nmap zcc ci"
nmap zaa ca"
nmap zxx ci]

" === 貼上 yank 內容 ===
nmap ,p "0p
nmap ,P "0P
imap z,p <Esc>"0pa
imap z,P <Esc>"0Pa

" === 其他 ===
nmap <BS> a<BS>
nmap zb ciw
nmap hc ^C
nmap zsc :action ShowCodeStructure<CR>
nmap zpm :action PasteMultiple<CR>
vmap /S :action SurroundWith<CR>
map <C-A-K> :action MoveLineUp<CR>:action VimAutoIndentLines<CR>
map <C-A-J> :action MoveLineDown<CR>:action VimAutoIndentLines<CR>
map <A-D> :action EditorDeleteLine<CR>
imap <C-x> <Esc>dd
imap <C-a> <Esc>ma<CR>ggVG
nmap <C-CR> a<CR><Esc>
nmap <A-u> :redo<CR>
nmap <A-l> :set rnu!<CR>

" === IDE 視窗 ===
nmap <Leader>l <Action>(SelectInProjectView)
nmap <Leader><Leader>l <Action>(SelectInProjectView)
nmap <Leader><Leader>e <Action>(RecentLocations)
nmap <Leader><Leader>f <Action>(RecentFiles)
nmap <Leader><Leader>h <Action>(HideAllWindows)

" === 停用摺疊快捷鍵 ===
nnoremap za <Nop>
nnoremap zM <Nop>
nnoremap zr <Nop>
nnoremap zR <Nop>
nnoremap zE <Nop>
nnoremap zj <Nop>
nnoremap zk <Nop>
nnoremap zN <Nop>