瀏覽代碼

added vscode support

Chris 5 年之前
父節點
當前提交
53123f954c
共有 5 個文件被更改,包括 183 次插入92 次删除
  1. 45 40
      general/settings.vim
  2. 25 12
      init.vim
  3. 41 38
      keys/mappings.vim
  4. 5 2
      vim-plug/plugins.vim
  5. 67 0
      vscode/windows.vim

+ 45 - 40
general/settings.vim

@@ -1,46 +1,51 @@
 " set leader key
 map <Space> <Leader>
 
-syntax enable                           " Enables syntax highlighing
-set hidden                              " Required to keep multiple buffers open multiple buffers
-set nowrap                              " Display long lines as just one line
-set encoding=utf-8                      " The encoding displayed 
-set pumheight=10                        " Makes popup menu smaller
-set fileencoding=utf-8                  " The encoding written to file
-set ruler              			            " Show the cursor position all the time
-set cmdheight=2                         " More space for displaying messages
-set iskeyword+=-                      	" treat dash separated words as a word text object"
-set mouse=a                             " Enable your mouse
-set splitbelow                          " Horizontal splits will automatically be below
-set splitright                          " Vertical splits will automatically be to the right
-set t_Co=256                            " Support 256 colors
-set conceallevel=0                      " So that I can see `` in markdown files
-set foldcolumn=2                        " Folding abilities
-set tabstop=2                           " Insert 2 spaces for a tab
-set shiftwidth=2                        " Change the number of space characters inserted for indentation
-set smarttab                            " Makes tabbing smarter will realize you have 2 vs 4
-set expandtab                           " Converts tabs to spaces
-set smartindent                         " Makes indenting smart
-set autoindent                          " Good auto indent
-set laststatus=0                        " Always display the status line
-set number                              " Line numbers
-set cursorline                          " Enable highlighting of the current line
-set background=dark                     " tell vim what the background color looks like
-set showtabline=2                       " Always show tabs 
-set noshowmode                          " We don't need to see things like -- INSERT -- anymore
-set nobackup                            " This is recommended by coc
-set nowritebackup                       " This is recommended by coc
-set shortmess+=c                        " Don't pass messages to |ins-completion-menu|.
-set signcolumn=yes                      " Always show the signcolumn, otherwise it would shift the text each time
-set updatetime=300                      " Faster completion
-set timeoutlen=100                      " By default timeoutlen is 1000 ms
-set formatoptions-=cro                  " Stop newline continution of comments
-set clipboard=unnamedplus               " Copy paste between vim and everything else
-"set autochdir                           " Your working directory will always be the same as your working directory
+if !exists('g:vscode')
+  syntax enable                           " Enables syntax highlighing
+  set hidden                              " Required to keep multiple buffers open multiple buffers
+  set nowrap                              " Display long lines as just one line
+  set encoding=utf-8                      " The encoding displayed 
+  set pumheight=10                        " Makes popup menu smaller
+  set fileencoding=utf-8                  " The encoding written to file
+  set ruler              			            " Show the cursor position all the time
+  set cmdheight=2                         " More space for displaying messages
+  set iskeyword+=-                      	" treat dash separated words as a word text object"
+  set mouse=a                             " Enable your mouse
+  set splitbelow                          " Horizontal splits will automatically be below
+  set splitright                          " Vertical splits will automatically be to the right
+  set t_Co=256                            " Support 256 colors
+  set conceallevel=0                      " So that I can see `` in markdown files
+  set tabstop=2                           " Insert 2 spaces for a tab
+  set shiftwidth=2                        " Change the number of space characters inserted for indentation
+  set smarttab                            " Makes tabbing smarter will realize you have 2 vs 4
+  set expandtab                           " Converts tabs to spaces
+  set smartindent                         " Makes indenting smart
+  set autoindent                          " Good auto indent
+  set laststatus=0                        " Always display the status line
+  set number                              " Line numbers
+  set cursorline                          " Enable highlighting of the current line
+  set background=dark                     " tell vim what the background color looks like
+  set showtabline=2                       " Always show tabs 
+  set noshowmode                          " We don't need to see things like -- INSERT -- anymore
+  set nobackup                            " This is recommended by coc
+  set nowritebackup                       " This is recommended by coc
+  set shortmess+=c                        " Don't pass messages to |ins-completion-menu|.
+  set signcolumn=yes                      " Always show the signcolumn, otherwise it would shift the text each time
+  set updatetime=300                      " Faster completion
+  set timeoutlen=100                      " By default timeoutlen is 1000 ms
+  set formatoptions-=cro                  " Stop newline continution of comments
+  set clipboard=unnamedplus               " Copy paste between vim and everything else
+  set incsearch
+  " set autochdir                           " Your working directory will always be the same as your working directory
+  " set foldcolumn=2                        " Folding abilities
 
-au! BufWritePost $MYVIMRC source %      " auto source when writing to init.vm alternatively you can run :source $MYVIMRC
-autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
+  au! BufWritePost $MYVIMRC source %      " auto source when writing to init.vm alternatively you can run :source $MYVIMRC
+  autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
+
+
+  " You can't stop me
+  cmap w!! w !sudo tee %
+endif
 
 
-" You can't stop me
-cmap w!! w !sudo tee %

+ 25 - 12
init.vim

@@ -1,16 +1,29 @@
-" Viml Plugins
+"    ____      _ __        _         
+"   /  _/___  (_) /__   __(_)___ ___ 
+"   / // __ \/ / __/ | / / / __ `__ \
+" _/ // / / / / /__| |/ / / / / / / /
+"/___/_/ /_/_/\__(_)___/_/_/ /_/ /_/ 
+
+
+" Always source these
 source $HOME/.config/nvim/vim-plug/plugins.vim
 source $HOME/.config/nvim/general/settings.vim
-source $HOME/.config/nvim/general/paths.vim
 source $HOME/.config/nvim/keys/mappings.vim
-source $HOME/.config/nvim/themes/syntax.vim
-source $HOME/.config/nvim/themes/onedark.vim
-source $HOME/.config/nvim/themes/airline.vim
-source $HOME/.config/nvim/plug-config/coc.vim
-source $HOME/.config/nvim/plug-config/rnvimr.vim
-source $HOME/.config/nvim/plug-config/fzf.vim
-source $HOME/.config/nvim/plug-config/commentary.vim
-source $HOME/.config/nvim/plug-config/rainbow.vim
+source $HOME/.config/nvim/general/paths.vim
 
-" Lua Plugins
-lua require'plug-colorizer'
+" Source depending on if VSCode is our client
+if exists('g:vscode')
+    " VSCode extension
+    source $HOME/.config/nvim/vscode/windows.vim
+else
+    " ordinary neovim
+    source $HOME/.config/nvim/themes/syntax.vim
+    source $HOME/.config/nvim/themes/onedark.vim
+    source $HOME/.config/nvim/themes/airline.vim
+    source $HOME/.config/nvim/plug-config/coc.vim
+    source $HOME/.config/nvim/plug-config/rnvimr.vim
+    source $HOME/.config/nvim/plug-config/fzf.vim
+    source $HOME/.config/nvim/plug-config/commentary.vim
+    source $HOME/.config/nvim/plug-config/rainbow.vim
+    lua require'plug-colorizer'
+endif

+ 41 - 38
keys/mappings.vim

@@ -1,42 +1,45 @@
-" Better nav for omnicomplete
-inoremap <expr> <c-j> ("\<C-n>")
-inoremap <expr> <c-k> ("\<C-p>")
-
-" Use alt + hjkl to resize windows
-nnoremap <M-j>    :resize -2<CR>
-nnoremap <M-k>    :resize +2<CR>
-nnoremap <M-h>    :vertical resize -2<CR>
-nnoremap <M-l>    :vertical resize +2<CR>
-
-" I hate escape more than anything else
-inoremap jk <Esc>
-inoremap kj <Esc>
-
-" Easy CAPS
-inoremap <c-u> <ESC>viwUi
-nnoremap <c-u> viwU<Esc>
-
-" TAB in general mode will move to text buffer
-nnoremap <TAB> :bnext<CR>
-" SHIFT-TAB will go back
-nnoremap <S-TAB> :bprevious<CR>
-
-" Alternate way to save
-nnoremap <C-s> :w<CR>
-" Alternate way to quit
-nnoremap <C-Q> :wq!<CR>
-" Use control-c instead of escape
-nnoremap <C-c> <Esc>
-" <TAB>: completion.
-inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
+
+if !exists('g:vscode')
+  " Better nav for omnicomplete
+  inoremap <expr> <c-j> ("\<C-n>")
+  inoremap <expr> <c-k> ("\<C-p>")
+
+  " I hate escape more than anything else
+  inoremap jk <Esc>
+  inoremap kj <Esc>
+
+  " Easy CAPS
+  " inoremap <c-u> <ESC>viwUi
+  " nnoremap <c-u> viwU<Esc>
+
+  " TAB in general mode will move to text buffer
+  nnoremap <TAB> :bnext<CR>
+  " SHIFT-TAB will go back
+  nnoremap <S-TAB> :bprevious<CR>
+
+  " Alternate way to save
+  nnoremap <C-s> :w<CR>
+  " Alternate way to quit
+  nnoremap <C-Q> :wq!<CR>
+  " Use control-c instead of escape
+  nnoremap <C-c> <Esc>
+  " <TAB>: completion.
+  inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
+
+
+  " Better window navigation
+  nnoremap <C-h> <C-w>h
+  nnoremap <C-j> <C-w>j
+  nnoremap <C-k> <C-w>k
+  nnoremap <C-l> <C-w>l
+
+  " Use alt + hjkl to resize windows
+  nnoremap <M-j>    :resize -2<CR>
+  nnoremap <M-k>    :resize +2<CR>
+  nnoremap <M-h>    :vertical resize -2<CR>
+  nnoremap <M-l>    :vertical resize +2<CR>
+endif
 
 " Better tabbing
 vnoremap < <gv
 vnoremap > >gv
-
-" Better window navigation
-nnoremap <C-h> <C-w>h
-nnoremap <C-j> <C-w>j
-nnoremap <C-k> <C-w>k
-nnoremap <C-l> <C-w>l
-

+ 5 - 2
vim-plug/plugins.vim

@@ -8,13 +8,16 @@ endif
 
 call plug#begin('~/.config/nvim/autoload/plugged')
 
+  if !exists('g:vscode')
+    " VSCode extension
+    " ordinary neovim
     " Better Syntax Support
     Plug 'sheerun/vim-polyglot'
     " Auto pairs for '(' '[' '{' 
     Plug 'jiangmiao/auto-pairs'
     " Themes
     Plug 'christianchiarulli/onedark.vim'
-    Plug 'kaicataldo/material.vim'
+    " Plug 'kaicataldo/material.vim'
     " Intellisense
     Plug 'neoclide/coc.nvim', {'branch': 'release'}
     " Status Line
@@ -31,7 +34,7 @@ call plug#begin('~/.config/nvim/autoload/plugged')
     " Add some color
     Plug 'norcalli/nvim-colorizer.lua'
     Plug 'junegunn/rainbow_parentheses.vim'
-
+  endif
 
 
 call plug#end()

+ 67 - 0
vscode/windows.vim

@@ -0,0 +1,67 @@
+
+"VSCode
+function! s:split(...) abort
+    let direction = a:1
+    let file = a:2
+    call VSCodeCall(direction == 'h' ? 'workbench.action.splitEditorDown' : 'workbench.action.splitEditorRight')
+    if file != ''
+        call VSCodeExtensionNotify('open-file', expand(file), 'all')
+    endif
+endfunction
+
+function! s:splitNew(...)
+    let file = a:2
+    call s:split(a:1, file == '' ? '__vscode_new__' : file)
+endfunction
+
+function! s:closeOtherEditors()
+    call VSCodeNotify('workbench.action.closeEditorsInOtherGroups')
+    call VSCodeNotify('workbench.action.closeOtherEditors')
+endfunction
+
+function! s:manageEditorSize(...)
+    let count = a:1
+    let to = a:2
+    for i in range(1, count ? count : 1)
+        call VSCodeNotify(to == 'increase' ? 'workbench.action.increaseViewSize' : 'workbench.action.decreaseViewSize')
+    endfor
+endfunction
+
+command! -complete=file -nargs=? Split call <SID>split('h', <q-args>)
+command! -complete=file -nargs=? Vsplit call <SID>split('v', <q-args>)
+command! -complete=file -nargs=? New call <SID>split('h', '__vscode_new__')
+command! -complete=file -nargs=? Vnew call <SID>split('v', '__vscode_new__')
+command! -bang Only if <q-bang> == '!' | call <SID>closeOtherEditors() | else | call VSCodeNotify('workbench.action.joinAllGroups') | endif
+
+nnoremap <silent> <C-w>s :call <SID>split('h')<CR>
+xnoremap <silent> <C-w>s :call <SID>split('h')<CR>
+
+nnoremap <silent> <C-w>v :call <SID>split('v')<CR>
+xnoremap <silent> <C-w>v :call <SID>split('v')<CR>
+
+nnoremap <silent> <C-w>n :call <SID>splitNew('h', '__vscode_new__')<CR>
+xnoremap <silent> <C-w>n :call <SID>splitNew('h', '__vscode_new__')<CR>
+
+nnoremap <silent> <C-j> :call VSCodeNotify('workbench.action.focusBelowGroup')<CR>
+xnoremap <silent> <C-j> :call VSCodeNotify('workbench.action.focusBelowGroup')<CR>
+nnoremap <silent> <C-k> :call VSCodeNotify('workbench.action.focusAboveGroup')<CR>
+xnoremap <silent> <C-k> :call VSCodeNotify('workbench.action.focusAboveGroup')<CR>
+nnoremap <silent> <C-h> :call VSCodeNotify('workbench.action.focusLeftGroup')<CR>
+xnoremap <silent> <C-h> :call VSCodeNotify('workbench.action.focusLeftGroup')<CR>
+nnoremap <silent> <C-l> :call VSCodeNotify('workbench.action.focusRightGroup')<CR>
+xnoremap <silent> <C-l> :call VSCodeNotify('workbench.action.focusRightGroup')<CR>
+
+nnoremap <silent> <C-w>= :<C-u>call VSCodeNotify('workbench.action.evenEditorWidths')<CR>
+xnoremap <silent> <C-w>= :<C-u>call VSCodeNotify('workbench.action.evenEditorWidths')<CR>
+
+nnoremap <silent> <C-w>> :<C-u>call <SID>manageEditorSize(v:count, 'increase')<CR>
+xnoremap <silent> <C-w>> :<C-u>call <SID>manageEditorSize(v:count, 'increase')<CR>
+nnoremap <silent> <C-w>+ :<C-u>call <SID>manageEditorSize(v:count, 'increase')<CR>
+xnoremap <silent> <C-w>+ :<C-u>call <SID>manageEditorSize(v:count, 'increase')<CR>
+nnoremap <silent> <C-w>< :<C-u>call <SID>manageEditorSize(v:count, 'decrease')<CR>
+xnoremap <silent> <C-w>< :<C-u>call <SID>manageEditorSize(v:count, 'decrease')<CR>
+nnoremap <silent> <C-w>- :<C-u>call <SID>manageEditorSize(v:count, 'decrease')<CR>
+xnoremap <silent> <C-w>- :<C-u>call <SID>manageEditorSize(v:count, 'decrease')<CR>
+
+nnoremap <silent> <C-w>_ :<C-u>call VSCodeNotify('workbench.action.toggleEditorWidths')<CR>
+