Skip to content

Latest commit

 

History

History
96 lines (71 loc) · 4.64 KB

vim.md

File metadata and controls

96 lines (71 loc) · 4.64 KB

Vim

Vim là một text editor thô sơ, nhưng có thể dễ dàng thêm plugin, settings để trở thành một text editor rất mạnh.

Vim screenshot

Vim cơ bản

Vim gồm 3 mode chính:

  • Normal mode: ở mode này, bạn CHỈ có thể dùng lệnh để điều khiển (một vài lệnh cơ bản: di chuyển, cut, copy, undo, thay đổi settings...)
  • Insert mode: ở mode này, bạn có thể thay đổi file
  • Visual mode: mode này dùng để bôi đen

Chuyển mode:

  • Insert / visual mode --> normal: Esc
  • Normal mode --> insert: i
  • Normal mode --> visual: v

Normal mode

  • Di chuyển:
    • Dùng cách phím mũi tên
    • w, b: di chuyển tiến / lùi 1 từ
    • $ di chuyển về cuối dòng
    • ^ về đầu dòng
    • gg: di chuyển về đầu file
    • G: di chuyển về cuối file
  • Search: /pattern
  • Save: :w
  • Save & Quit: :wq
  • Quit & Do not save: :q!

Để học thêm: cài vimtutor

Settings

Ở normal mode, có thể chỉnh settings của vim, ví dụ, gõ :set nu sẽ hiển thị được số dòng. Vim mạnh ở chỗ tất cả các settings có thể được lưu ở file ~/.vimrc File này cũng là chỗ để lưu các plugins settings và các functions mà bạn tự viết để customize Vim. Trong file ~/.vimrc, bạn được dùng ngôn ngữ lập trình Vimscript, nên những gì bạn có thể làm trong ~/.vimrc là vô tận. Các phần sau sẽ nói về 1 số thủ thuật quan trọng của vim.

File vimrc của RR

Bạn có thể tìm được rất nhiều settings quan trọng trong file .vimrc của mình, ví dụ như tab size, hiện số dòng, highlight kết quả search, và tìm ngay khi vừa bắt đầu gõ search, lưu những gì được copy trong vim vào clipboard (để có thể paste vào cac chương trình khác)...

Trong settings, bạn có thể map một số phím tắt thành lệnh / phím tắt khác. Hướng dẫn

Vim plugins

Plugin đầu tiên mà bạn cần cài là Vundle. Plugin này sẽ giúp việc cài các plugin khác đơn giản hơn rất nhiều. Có thể thấy rõ điều này khi nhìn vào file vimrc của mình: Chỉ cần thêm 1 dòng Bundle.... vào vimrc, rồi run command: :PluginInstall.

Các plugin mình recommend:

  • Powerline: Hiện một số thông tin quan trọng: mode hiện tại, git branch, path/to/file... (xem dòng màu xanh da trời nổi bật ở screenshot)
  • syntastic: Syntax checking cho rất nhiều ngôn ngữ lập trình
  • nerdtree: Giúp browse file (phần bên trái của screenshot)
  • jellybeans: theme jellybeans rất đẹp
  • ctrlp: giúp browse file trong project bằng Ctrl + P giống như Sublime text

Tab completion

Thêm đoạn code này vào vimrc --> có thể dùng tab để autocomplete dựa theo các từ có trong file (giống Sublime text)

function! My_Tab_Completion()
    if col('.')>1 && strpart( getline('.'), col('.')-2, 3 ) =~ '^\w'
        return "\<C-P>"
    else
        return "\<Tab>"
endfunction
inoremap <Tab> <C-R>=My_Tab_Completion()<CR>

Setting cho riêng từng ngôn ngữ

Ví dụ, mình muốn với Python, thì F9 được map thành 1 lệnh chạy Python, với C++ thì F9 được map thành lệnh chạy C++.

Mình có 2 hàm riêng:

function! PYSET()
  nnoremap <buffer> <F9> :exec '!python' shellescape(@%, 1)<cr>
endfunction
function! CPPSET()
  nnoremap <buffer> <F9> :w<cr>:!clang++ % -o %< -std=c++11 -stdlib=libc++ -I ./<cr>:!./%<<cr>
endfunction

Rồi mình gọi 1 trong 2 hàm này dựa trên kiểu file (kiểu file được nhận diện bởi Vim):

autocmd FileType python call PYSET()
autocmd FileType C      call CPPSET()
autocmd FileType cc     call CPPSET()
autocmd FileType cpp    call CPPSET()

Markdown file

Vim cho phép tự định nghĩa syntax và code highlight. Mình dùng Markdown khá nhiều và không tìm được plugin nào để highlight phù hợp với nhu cầu của mình (cho gõ LaTex trong markdown, cho highlight code trong markdown), nên mình đã tự viết vim plugin cho markdown