-
-
Save miguelgrinberg/527bb5a400791f89b3c4da4bd61222e4 to your computer and use it in GitHub Desktop.
" plugins | |
let need_to_install_plugins = 0 | |
if empty(glob('~/.vim/autoload/plug.vim')) | |
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs | |
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim | |
let need_to_install_plugins = 1 | |
endif | |
call plug#begin() | |
Plug 'tpope/vim-sensible' | |
Plug 'itchyny/lightline.vim' | |
Plug 'joshdick/onedark.vim' | |
Plug 'ap/vim-buftabline' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'preservim/nerdtree' | |
Plug 'jistr/vim-nerdtree-tabs' | |
Plug 'Xuyuanp/nerdtree-git-plugin' | |
Plug 'jiangmiao/auto-pairs' | |
Plug 'dense-analysis/ale' | |
Plug 'majutsushi/tagbar' | |
Plug 'vim-scripts/indentpython.vim' | |
Plug 'lepture/vim-jinja' | |
Plug 'pangloss/vim-javascript' | |
Plug 'alvan/vim-closetag' | |
Plug 'maxmellon/vim-jsx-pretty' | |
call plug#end() | |
filetype plugin indent on | |
syntax on | |
if need_to_install_plugins == 1 | |
echo "Installing plugins..." | |
silent! PlugInstall | |
echo "Done!" | |
q | |
endif | |
" always show the status bar | |
set laststatus=2 | |
" enable 256 colors | |
set t_Co=256 | |
set t_ut= | |
" turn on line numbering | |
set number | |
" sane text files | |
set fileformat=unix | |
set encoding=utf-8 | |
set fileencoding=utf-8 | |
" sane editing | |
set tabstop=4 | |
set shiftwidth=4 | |
set softtabstop=4 | |
set colorcolumn=80 | |
set expandtab | |
set viminfo='25,\"50,n~/.viminfo | |
autocmd FileType html setlocal tabstop=2 shiftwidth=2 softtabstop=2 | |
autocmd FileType css setlocal tabstop=2 shiftwidth=2 softtabstop=2 | |
autocmd FileType javascript setlocal tabstop=2 shiftwidth=2 softtabstop=2 | |
" auto-pairs | |
au FileType python let b:AutoPairs = AutoPairsDefine({"f'" : "'", "r'" : "'", "b'" : "'"}) | |
" word movement | |
imap <S-Left> <Esc>bi | |
nmap <S-Left> b | |
imap <S-Right> <Esc><Right>wi | |
nmap <S-Right> w | |
" indent/unindent with tab/shift-tab | |
nmap <Tab> >> | |
nmap <S-tab> << | |
imap <S-Tab> <Esc><<i | |
vmap <Tab> >gv | |
vmap <S-Tab> <gv | |
" mouse | |
set mouse=a | |
let g:is_mouse_enabled = 1 | |
noremap <silent> <Leader>m :call ToggleMouse()<CR> | |
function ToggleMouse() | |
if g:is_mouse_enabled == 1 | |
echo "Mouse OFF" | |
set mouse= | |
let g:is_mouse_enabled = 0 | |
else | |
echo "Mouse ON" | |
set mouse=a | |
let g:is_mouse_enabled = 1 | |
endif | |
endfunction | |
" color scheme | |
syntax on | |
colorscheme onedark | |
filetype on | |
filetype plugin indent on | |
" lightline | |
set noshowmode | |
let g:lightline = { 'colorscheme': 'onedark' } | |
" code folding | |
set foldmethod=indent | |
set foldlevel=99 | |
" wrap toggle | |
setlocal nowrap | |
noremap <silent> <Leader>w :call ToggleWrap()<CR> | |
function ToggleWrap() | |
if &wrap | |
echo "Wrap OFF" | |
setlocal nowrap | |
set virtualedit=all | |
silent! nunmap <buffer> <Up> | |
silent! nunmap <buffer> <Down> | |
silent! nunmap <buffer> <Home> | |
silent! nunmap <buffer> <End> | |
silent! iunmap <buffer> <Up> | |
silent! iunmap <buffer> <Down> | |
silent! iunmap <buffer> <Home> | |
silent! iunmap <buffer> <End> | |
else | |
echo "Wrap ON" | |
setlocal wrap linebreak nolist | |
set virtualedit= | |
setlocal display+=lastline | |
noremap <buffer> <silent> <Up> gk | |
noremap <buffer> <silent> <Down> gj | |
noremap <buffer> <silent> <Home> g<Home> | |
noremap <buffer> <silent> <End> g<End> | |
inoremap <buffer> <silent> <Up> <C-o>gk | |
inoremap <buffer> <silent> <Down> <C-o>gj | |
inoremap <buffer> <silent> <Home> <C-o>g<Home> | |
inoremap <buffer> <silent> <End> <C-o>g<End> | |
endif | |
endfunction | |
" move through split windows | |
nmap <leader><Up> :wincmd k<CR> | |
nmap <leader><Down> :wincmd j<CR> | |
nmap <leader><Left> :wincmd h<CR> | |
nmap <leader><Right> :wincmd l<CR> | |
" move through buffers | |
nmap <leader>[ :bp!<CR> | |
nmap <leader>] :bn!<CR> | |
nmap <leader>x :bp<bar>bd#<CR> | |
" restore place in file from previous session | |
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif | |
" file browser | |
let NERDTreeIgnore = ['\.pyc$', '__pycache__'] | |
let NERDTreeMinimalUI = 1 | |
let g:nerdtree_open = 0 | |
map <leader>n :call NERDTreeToggle()<CR> | |
function NERDTreeToggle() | |
NERDTreeTabsToggle | |
if g:nerdtree_open == 1 | |
let g:nerdtree_open = 0 | |
else | |
let g:nerdtree_open = 1 | |
wincmd p | |
endif | |
endfunction | |
function! StartUp() | |
if 0 == argc() | |
NERDTree | |
end | |
endfunction | |
autocmd VimEnter * call StartUp() | |
" ale | |
map <C-e> <Plug>(ale_next_wrap) | |
map <C-r> <Plug>(ale_previous_wrap) | |
" tags | |
map <leader>t :TagbarToggle<CR> | |
" copy, cut and paste | |
vmap <C-c> "+y | |
vmap <C-x> "+c | |
vmap <C-v> c<ESC>"+p | |
imap <C-v> <ESC>"+pa | |
" disable autoindent when pasting text | |
" source: https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode | |
let &t_SI .= "\<Esc>[?2004h" | |
let &t_EI .= "\<Esc>[?2004l" | |
function! XTermPasteBegin() | |
set pastetoggle=<Esc>[201~ | |
set paste | |
return "" | |
endfunction | |
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin() |
@corpmule I don't know. I'm not a regular Windows user, but I have used this configuration on WSL occasionally and I don't recall having any problems.
@RandomShtuf I'm not sure, but the error comes from the auto-pairs plugin, so it must be related to that. Unfortunately I'm not an expert in vim plugin internals, so I cannot really help you on this.
@RandomShtuf I'm not sure, but the error comes from the auto-pairs plugin, so it must be related to that. Unfortunately I'm not an expert in vim plugin internals, so I cannot really help you on this.
oh... thanks anyway... fortunately i was able to fix it... i just had to remove ~/.vim like you did in your video
another quick question tho... is there a way to show dot files/hidden files on the file manager?
@RandomShtuf you can add let NERDTreeShowHidden=1
thanks
@miguelgrinberg sir I am not able to on file system and tagbar.
could you please tell me how to do that
Hi Miguel. Are you using the default macOS terminal? Does not seem to work properly for me when using the nice onedark
theme, no matter the settings. Works fine with set termguicolors
and iTerm though. Any ideas on this matter? Thanks!
@mamodrzejewski I use iterm2.
@45-4ry I don't think ALE can do that, it checks in the background and adds marks on the lines that have errors. Try the vim-syntastic extension instead.
@miguelgrinberg Thank you
@miguelgrinberg : Thank's for your replies.
Have a nice day! JeanYves.
Miguel, gracias por compartir.
@miguelgrinberg and Everyone,
I'm getting errors when I run vim with this vimrc.
I only know enough about all of this ... to be dangerous. :) So I'll probably be asking some stoopid questions.
I'm using version 8.0 in the Windows Linux (Ubuntu) shell or app.
At first the errors were from the "if" statement that runs "curl."
I kept getting permission denied when it attempted to create the ~/.vim/autoload/plugin.vim. I tried chaning the permissions on the directories and files but it didn't help. In fact, this is what it looks like now.
I've never seen anything like that.
I also ran the curl command directly from the command line, using sudo. That might be how the above was actually created.
After I edited the vimrc, to move the ! (bang) -- to be directly after the "silent" command, and, put the url on the same line, those errors went away.
But now ... I get more errors...
Those "Not an editor command" erors continue through all the lines (plugins) within this function.
If anybody has an idea what I'm doing wrong, or how I could try to fix this, I'd appreciate it.