01/10/2018, 12:05

Giao lưu sử dụng Vim

Mình lập topic để share file cài đặt .vimrc cũng như screenshot để mọi người có thể giao lưu, học hỏi lẫn nhau.

vim screenshot

Mình xài vim trong cygwin với tmux. Mình sử dụng vim-plug để cài đặt plugin:

  • Theme: gruvbox
  • supertab
  • lightline
  • auto-pairs
  • vim-clang
  • neomake

Font mình sử dụng là Iosevka

Mình sử dụng vim-clang cho clang-format và autocomplete C++; neomake để kiểm tra syntax.

Mình chỉ mới học xài vim gần đây thôi

dotfiles của mình

Dark.Hades viết 14:09 ngày 01/10/2018

I’m too lazy to use :PluginInstall or somethings like that, so I choose Pathogen

Yoshie viết 14:21 ngày 01/10/2018

Vim-plug mình sử dụng vì cộng đồng reddit giới thiệu thôi. Để mình check thử pathogen.

Hieu Nguyen viết 14:16 ngày 01/10/2018

Mình đang tập dùng vừa xem cuốn này. Cũng code chưa lâu, tập dùng thói quen tốt để sau làm hiêu quả, nhanh hơn.
Cuốn này mình xem review amz, goodread là best về Vim, mới đọc qua nội dung cũng thấy ok.
Bạn nào muốn cùng đọc k

goodreads.com

Practical Vim

Vim is a fast and efficient text editor that will make you a faster and more efficient developer. It's available on almost every OS--if y...

Son Tran viết 14:06 ngày 01/10/2018

How can pathogen work without git clone or something like that?

Son Tran viết 14:21 ngày 01/10/2018

Mình dùng neovim chứ không dùng vim nên dot file của mình là init.vim thay vì .vimrc
Đây là dot file mình vẫn dùng hằng ngày, plugin manager là vim-plug:

call plug#begin('~/.config/nvim/plugged')
    Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
    Plug 'zchee/deoplete-jedi',
    Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
    Plug 'junegunn/fzf.vim'
    Plug 'gabesoft/vim-ags'
    Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
    Plug 'pangloss/vim-javascript'
    Plug 'crusoexia/vim-javascript-lib'
    Plug 'othree/html5.vim'
    Plug 'mxw/vim-jsx'
    Plug 'thaerkh/vim-indentguides'
    Plug 'Valloric/MatchTagAlways'
    Plug 'w0rp/ale'
    Plug 'prettier/vim-prettier', { 'do': 'yarn install' }
    Plug 'jwalton512/vim-blade'
    Plug 'tpope/vim-fugitive'
call plug#end()
let mapleader = ","
augroup vimrc_autocmd
    autocmd!

    autocmd VimEnter * nmap <Leader>w <C-w>w

    " autocmd VimEnter * nmap <F1> :tabnew<CR>:terminal<CR>
    " autocmd VimEnter * imap <F1> <Esc>:tabnew<CR>:terminal<CR>

    autocmd VimEnter * nmap <F2> :tabnew<CR>
    autocmd VimEnter * imap <F2> <Esc>:tabnew<CR>

    autocmd VimEnter * nmap <F4> :w<CR>
    autocmd VimEnter * imap <F4> <Esc>:w<CR>

    autocmd VimEnter * nmap <F5> :wa<CR>
    autocmd VimEnter * imap <F5> <Esc>:wa<CR>

    autocmd VimEnter * nmap <F8> :q!<CR>
    autocmd VimEnter * imap <F8> <Esc>:q!<CR>

    autocmd VimEnter * nmap <F9> :%retab<CR>
    autocmd VimEnter * imap <F9> <Esc>:%retab<CR>

    autocmd VimEnter * nmap <F3> :NERDTreeToggle<CR>
    autocmd VimEnter * imap <F3> <Esc>:NERDTreeToggle<CR>

    autocmd VimEnter * nmap <Leader>j :ALENext<cr>
    autocmd VimEnter * nmap <Leader>k :ALEPrevious<cr>

    autocmd VimEnter * nmap <S-U> <C-R>

    autocmd FileType python set sw=4
    autocmd FileType python set ts=4
    autocmd FileType python set sts=4

    autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
augroup END

" Go to tab by number
noremap <leader>1 1gt
noremap <leader>2 2gt
noremap <leader>3 3gt
noremap <leader>4 4gt
noremap <leader>5 5gt
noremap <leader>6 6gt
noremap <leader>7 7gt
noremap <leader>8 8gt
noremap <leader>9 9gt
noremap <leader>0 :tablast<cr>

nnoremap <C-p> :FZF<CR>
nnoremap <C-l> :Buffers<CR>
nnoremap <C-k> :BTags<CR>
" inoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>O

let g:python_host_prog="/usr/local/bin/python2"

let g:NERDTreeWinPos = "right"
let g:NERDTreeShowBookmarks=1
let g:NERDTreeWinSize=35
let g:NERDTreeWinSize=40
let NERDTreeMapActivateNode="<space>"
let NERDTreeMapOpenInTab="<ENTER>"

set background=dark
set termguicolors

" filetype plugin indent on

syntax sync minlines=256
set lazyredraw " to avoid scrolling problems
set scrolljump=2
" set synmaxcol=120

set mouse=a
set number
set clipboard=unnamed
set smartcase
set ignorecase
set incsearch
set hlsearch
set showmatch

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

set foldmethod=indent
set foldlevel=19

" Use deoplete
let g:deoplete#enable_at_startup = 1
let g:deoplete#tag#cache_limit_size = 40000000

" prettier
let g:prettier#config#print_width = 120
let g:prettier#config#tab_width = 4
let g:prettier#exec_cmd_async = 1

let g:mta_filetypes = {
    \ 'javascript.js': 1,
    \ 'html' : 1,
    \ 'xhtml' : 1,
    \ 'xml' : 1,
    \ 'jinja' : 1,
\}

let g:javascript_plugin_flow = 1

let g:ale_sign_error = '●' " Less aggressive than the default '>>'
let g:ale_sign_warning = '.'
let g:ale_lint_on_enter = 0 " Less distracting when opening a new file
let g:ale_lint_on_text_changed = 'never'

highlight ALEErrorSign guifg=#F90000 guibg=black
highlight ALEWarningSign guifg=#F90000 guibg=black
highlight clear SignColumn

highlight Search guibg=peru guifg=white
Dark.Hades viết 14:17 ngày 01/10/2018

Nice question.

Thực ra thì cách làm của các trình quản lí đều tương tự nhau

Tuy nhiên nếu với các trình quản lí hiện nay, bạn phải add tay vào trong file init.nvim, hay vimrc gì đó, sau đó chạy install => mất 2 bước, file vimscript lại tăng số dòng => dần dần bad performance.

Với pathogen (hay chế độ autoload plugin của vim >=8.0) thì bạn chỉ cần git clone về thư mục đó, vậy là xong, không còn bước nào khác. (Nhét vào git submodule là best case)

Bản thân mình nhận thấy cách làm đó tiện lợi, vì trong dotfiles-config của mình không chỉ có vim, mà còn nhiều config cho các app khác, mỗi lần đổi môi trường làm việc, mình muốn chỉ chạy 1 lệnh install là sẽ hoàn tất và bắt đầu công việc ngay.
=> Vậy nên việc git submodule update hoàn tất là bắt tay vào việc được ngay, không phải mất công vào vim chạy install nữa.

Son Tran viết 14:15 ngày 01/10/2018

Về vấn đề performance: nhu cầu của mỗi người sẽ dừng lại và ổn định, ví dụ như mình chỉ dùng tầm 1 tá plugin đó thôi, cả năm trời không thay đổi, nếu có đổi thì dăm bửa nửa tháng mới đổi nên việc bạn làm 2 bước hay 1 bước không hề là vấn đề gì (thêm plugin, chạy :PlugInstall cực kì trực quan như sử dụng npm hay composer, pip…)

Vấn đề portable: Bạn hoàn toàn có thể dùng dot file mình chia sẻ trên, đem về máy có neovim và :PlugInstall 1 phát là xong luôn, không phải làm thêm gì cả.

Vấn đề quản lý plugin: Đối với vim-plug, chỉ cần :PlugUpdate là cả danh sách plugin cập nhật, muốn disable tạm thời 1 plugin, chỉ việc comment out cái đó đi, khi dùng lại thì không phải cài lại, chỉ cần bỏ comment đi. Những thao tác đó nếu dùng pathogen thì hoặc là bạn phải đổi tên plugin repo hoặc dùng g:pathogen_blacklist

Nếu xét trên các tiêu chí đó thì cá nhân mình thấy vim-plug ngon hơn

Dark.Hades viết 14:09 ngày 01/10/2018

Mình đồng tình với ý kiến vim-plug tiện lợi hơn nhiều so với pathogen.

Tuy nhiên có lẽ do thói quen nên mình không bỏ được pathogen (mặc dù dotfiles vim của mình không cần dùng pathogen nữa do vim8.0 đã tích hợp)

Nếu một ngày không xa mình gặp trường hợp như bạn nên trên thì chắc chắn mình sẽ thay đổi thói quen hiện tại.

Zhang Jike viết 14:10 ngày 01/10/2018

Mình sử dụng neovim, lang chính là Elixir và Javascript. Pm sử dụng dein.

GitHub

vthang95/mynvim

Contribute to mynvim development by creating an account on Github.

Aragami1408 viết 14:07 ngày 01/10/2018

plugin:

  • nerdtree
  • vim-autocomplete
  • fugitive
  • syntastic
  • vimify
    Theme: darcula
HK boy viết 14:13 ngày 01/10/2018

Theme của anh là gì mà đẹp thế ạ?

Zhang Jike viết 14:09 ngày 01/10/2018

À theme gruvbox nhé. Font fira code. Terminal là iterm2

HelloWorld viết 14:06 ngày 01/10/2018

Bạn sử dụng vim trên windows hay linux thế.

Zhang Jike viết 14:06 ngày 01/10/2018

Mình sử dụng trên mac

HelloWorld viết 14:17 ngày 01/10/2018

Làm sao để có được mấy cái tab này vậy bạn. Bạn có thể chia sẻ các file cấu hình vim của bạn được không
Mình thấy theme của bạn đẹp đẹp nên chuyển qua vim thử coi sao, Trước giờ toàn dùng vscode, sublime, với ide

Mình mới có cái giao dienj như vầy

HK boy viết 14:22 ngày 01/10/2018

Bạn có thể chia sẻ các file cấu hình vim của bạn được không

Anh ấy đã dẫn link mynvim ở trên rồi bạn.

HelloWorld viết 14:16 ngày 01/10/2018

Cái đó có mỗi color và init file thôi, còn các plug đi kèm nữa
Mình mới dùng vim được 1 tiếng
Hello world

HK boy viết 14:20 ngày 01/10/2018

Mình nghĩ cái đống

call dein#add('Shougo/dein.vim')
call dein#add('sheerun/vim-polyglot')
call dein#add('Shougo/neosnippet.vim')
call dein#add('Shougo/neosnippet-snippets')
call dein#add('tpope/vim-fugitive')
call dein#add('vim-airline/vim-airline')
call dein#add('vim-airline/vim-airline-themes')
" "call dein#add('SirVer/ultisnips')
" "call dein#add('mklabs/split-term.vim')
" "call dein#add('Lokaltog/powerline-fonts')
" call dein#add('Yggdroot/indentLine')
call dein#add('slashmili/alchemist.vim')
call dein#add('scrooloose/nerdtree')
call dein#add('Shougo/deoplete.nvim')
call dein#add('Xuyuanp/nerdtree-git-plugin')
call dein#add('ervandew/supertab')
call dein#add('chriskempson/base16-vim')
" "call dein#add('flazz/vim-colorschemes')
call dein#add('junegunn/fzf', { 'build': './install --all', 'merged': 0 }) 
call dein#add('junegunn/fzf.vim', { 'depends': 'fzf' })
call dein#add('airblade/vim-gitgutter')
call dein#add('pangloss/vim-javascript')
call dein#add('moll/vim-node')
call dein#add('jelera/vim-javascript-syntax')

chính là tên plugin…

ref:

github.com

vthang95/mynvim/blob/master/init.vim

set nocompatible
filetype on 
filetype plugin on

if (!isdirectory(expand("$HOME/.nvim/dein/repos/github.com/Shougo/dein.vim")))
  call system(expand("git clone https://github.com/Shougo/dein.vim $HOME/.nvim/dein/repos/github.com/Shougo/dein.vim"))
endif

set runtimepath+=~/.nvim/dein/repos/github.com/Shougo/dein.vim

call dein#begin('~/.nvim/dein/')

call dein#add('Shougo/dein.vim')
call dein#add('sheerun/vim-polyglot')
call dein#add('Shougo/neosnippet.vim')
call dein#add('Shougo/neosnippet-snippets')
call dein#add('tpope/vim-fugitive')
call dein#add('vim-airline/vim-airline')
call dein#add('vim-airline/vim-airline-themes')
" "call dein#add('SirVer/ultisnips')
This file has been truncated. show original

HelloWorld viết 14:12 ngày 01/10/2018

Mình chỉ muốn xin các plugin để tạo theme như trên thôi, mớ plugin này hình như còn làm công việc khác có thể mình không cần
Bạn làm được theme như của bạn trên chưa?
Cái plugin iterm2 giành riêng cho mac, nhưng còn cái airline không biết là cái gì

HK boy viết 14:06 ngày 01/10/2018

nhưng còn cái airline không biết là cái gì

Không biết thì tìm.

GitHub

vim-airline/vim-airline

vim-airline - lean & mean status/tabline for vim that's light as air

Được 1 phần những gì bạn cần rồi.

Bài liên quan
0