VIM使用簡記

Vim使用簡記:
普通模式進入編輯模式:

  • i insert
    a append
    o open a line blow
    I insert in line befor
    A append in line end
    O open a line above
    ctrl [ 可以跟esc一樣退出編輯模式
    gi 快速回到退出時的位置並進入編輯模式

編輯模式下:

  • ctrl w 刪除上一個單詞
    ctrl h 刪除上一個字符
    ctrl u 刪除一行
    在這裏插入圖片描述
    通過使用上面的命令可以解決複製代碼時的縮進問題。

普通模式下:

  • v 可視化模式 批量選擇選擇

  • V      按行批量選擇

  • vaw 和viw    選中一個單詞

  • ctrl v     按塊批量選擇

  • y(ank)    複製

  • yiw         複製一個單詞

  • yy     複製一行

  • p(ut)   粘貼

  • u(ndo)  撤銷

  • ctrl r   使用上一步的修改

  • d(elete) 刪除(剪切)

  • d p    命令配合進行剪切
    方向移動:
    在這裏插入圖片描述

單詞間:

  • w/W可以在跳到下一個單詞的開頭
    e/E 可以跳到一個word的尾部
    b/B 回到上一個單詞的首部

行間:

  • f{char} 快速移動到char字符上,t{char}移動char的前一個字符
    ; 該行的下一個 ,該行上一個
    F 向上搜索

水平移動:

  • 0 移動到行首, ^ 移動到行首第一個非空白字符
    $ 移動到行尾, g_移動到行尾非空白字符
    記住0和$即可

垂直移動:

  • 使用()在句子間移動,{ } 在段落間移動

頁面移動:

  • gg/G移動到文件開頭和結尾 ctrl+o快速返回
    H/M/L跳到屏幕開頭(head),中間(Middle),結尾(Lower)
    Ctrl+u Ctrl+f 上下翻頁(upword/forward)

增刪改查:

  • :進入編輯模式

  • 刪除:x刪除一個字符,dd刪除一行,dw=daw刪除一個單詞,diw刪除一個單詞,4x刪除四個字符

  • 修改:r(replace),c(change),s(substitute),r可以替換一個字符,s替換並進入插入模式,c配合文本對象可以快速修改,caw,ct{char}

  • 查詢:使用/或者?進行前向或者反向搜索;使用n/N跳轉到下一個或者上一個匹配;使用*或者#進行當前單詞的前向和後向匹配

  • 搜索替換substitute:

    :[range]s[ubstitute]/{pattern}/{string}/[flags]

  • range 範圍 10,20表示10-20行,%表示全部

  • 常用Flags標誌(可以進行組合使用):

    • g(global)表示全局範圍執行
    • c(confirm)表示確認,可以確認或者拒絕修改
    • n(number)報告匹配到的次數而不替換,可以用來查詢匹配次數

寄存器:

  • 通過"{register}前綴可以指定寄存器,不指定默認使用無名寄存器
    “” 表示無名寄存器,缺省下就表示無名寄存器
    "0 複製專用寄存器
    “+ 系統剪切板,”% 當前文件名, ". 上次插入的文本

cmd:命令模式

  • set clipboard=unnamed 將複製寄存器設爲系統剪切板
  • vs 豎分屏
  • sp 橫分屏
  • % s/word1/word2/g 使用word2替換文件中的所有word1
  • e! 禁止剛纔所有的更改

多文件操作(buffer window tab):

  • 操作:
    :e file_name 可以將多個文件添加到緩衝區(edit)
    buffer之間切換:
    • :ls列舉當前緩衝區,然後:b n跳轉到第n個緩衝區
      :bpre :bnext :bfirst :blast
      :b buffer_name

window 窗口
<ctrl+w>s 水平分割,<ctrl+w>v垂直分割,或者:sp和:vs
切換窗口:
在這裏插入圖片描述
Tab(標籤頁)操作
在這裏插入圖片描述
:tabnew {filename} 在新標籤中打開一個文件
在這裏插入圖片描述
文本對象操作方式(例如之前的dw):
[number] {text object]
number 表示次數,command 是命令,d(elete),c(hange),y(ank),v批量選擇
text object 要操作的文本對象,單詞w,句子s,段落p
vi“ 選擇”之間的對象
ci“ change inner of ”
ca[ change around of []
宏完成批量操作:

  • q 進行宏的錄製,再按一下q結束錄製,@a,執行a寄存器中的宏。
  • 也可以在v 可視化模式下,選擇所有行,然後進入:cmd模式執行,normal命令。也可以實現宏的效果。

補全:

  • ctrl+n 和 ctrl+p 補全單詞
  • ctrl+x ctrl+f 補全文件名
  • ctrl+x ctrl+o補全代碼,要開啓文件類型檢測,安裝插件

vim配色更換:

vim配置文件:vimrc

" 常用設置
" 設置行號
set number
colorscheme hybrid
" 按F2進入粘貼模式
set pastetoggle=<F2>
" 高亮搜索
set hlsearch
" 設置摺疊方式
set foldmethod=indent
" 使用映射

遞歸映射與非遞歸映射
個人vimrc臨時配置:

set shiftwidth=4
set softtabstop=4

syntax on
set nu
set autoindent

let mapleader=','
inoremap <leader>w <Esc>:w<cr>

inoremap jj <Esc>

noremap <C-h> <C-w>h
noremap <C-j> <C-w>j
noremap <C-k> <C-w>k
noremap <C-l> <C-w>l
" Specify a directory for plugins
" - For Neovim: stdpath('data') . '/plugged'
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.vim/plugged')
Plug 'mhinz/vim-startify'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'Yggdroot/indentLine'
Plug 'w0ng/vim-hybrid'
Plug 'valloric/youcompleteme'

Plug 'preservim/nerdtree'
Plug 'kien/ctrlp.vim'
Plug 'easymotion/vim-easymotion'

" Initialize plugin system
call plug#end()


nnoremap <leader>v :NERDTreeFind<cr>
nnoremap <leader>g :NERDTreeToggle<cr>
let NERDTreeShowHidden=1
let NERDTreeIgnore = ['\.pyc$', '\.swp', '\.swo', '\.vscode', '__pycache__']

let g:ctrlp_map = '<c-p>'

nmap ss <Plug>(easymotion-s2)

" 尋找全局配置文件
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py'

let g:ycm_add_preview_to_completeopt = 0
let g:ycm_show_diagnostics_ui = 0
let g:ycm_server_log_level = 'info'
let g:ycm_min_num_identifier_candidate_chars = 2
let g:ycm_collect_identifiers_from_comments_and_strings = 1
let g:ycm_complete_in_strings=1
let g:ycm_key_invoke_completion = '<c-z>'
set completeopt=menu,menuone

noremap <c-z> <NOP>

let g:ycm_semantic_triggers =  {
        ¦   \ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
        ¦   \ 'cs,lua,javascript': ['re!\w{2}'],
        ¦   \ }
let g:ycm_filetype_whitelist = {
        ¦   \ "c":1,
        ¦   \ "cpp":1,
        ¦   \ "objc":1,
        ¦   \ "sh":1,
        ¦   \ "zsh":1,
        ¦   \ "zimbu":1,
        ¦   \ }

插件管理器:

  • vim-plug, Vundle, pathogen, Dein.vim, volt 在vimrc中安裝vim-plug插件: https://github.com/junegunn/vim-plug 使用vim-plug安裝vim-startify

插件的介紹:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
參考:玩轉VIM從放棄到愛不釋手

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章