一、vim幾種模式:
normal模式:進入vim不能編輯或者少按esc的不能編輯的模式;
編輯模式:通過insert(插入)、append(追加)或者少新建一行o等等可以編輯內容模式;
命令模式:類似退出 :wq這種模式;
可視化模式:visual模式;(Visual模式一般用來塊狀選擇文本)類似於我們的shift+方向鍵選擇;
Normal模式下使用v進入visual選擇
使用V選擇行
使用ctrl+v進行方塊選擇
二、編輯寫入相關:
1、編輯寫入相關操作:
1)插入、追加、新建
小寫
大寫
2)編輯的一些相關操作:
糾錯操作(這個同時也適用shell終端)
ctrl+h刪除上一個字符ctrl+w刪除上一個單詞ctrl+u刪除當前行
終端shell一些好的操作:
ctrl+a移動到行首ctrl+e移動到行末尾ctrl+b向前移動ctrl+f向後移動
2、保存退出相關操作
1)保存退出
先按esc:wq---->(wirte&quit)shift+ZZ---->(wirte&quit)2)退出
3)強制退出
三、快捷操作:
1、設置行號:
2、分屏操作:
命令模式: :vs---->橫向分屏(vertical split) :vp---->縱向分屏(split) 想要退出對應的模式::q3、全局替換:
命令模式::% s/java/c++/g ---->全局替換(%全部字符、s替換、將Java替換c++、g全局)4、快速切換insert和normal模式:
insert切換normal模式normal切換insert模式5、vim移動快捷鍵:
普通的移動:左(h) ,下(j) , 上(k) ,右(l) ,移動也不會讓手指脫離主鍵盤區
6、在單詞之間移動:
w/W移到下一個word/WORD開頭。e/E 下一個word/WORD尾;b/B回到上一個word/WORD開頭,可以理解為backword;word指的是以非空白符分割的單詞,WORD以空白符分割的單詞;
7、行間搜索快速移動:
使用f{char}可以移動到char字符上, t移動到char的前一個字符如果第一次沒搜到 ,可以用分號(;)/逗號(,)繼續搜該行下一個/上一個大寫的F表示反過來搜前面的字符8、Vim水平移動
0移動到行首第一一個字符, ^移動到第一個非空白字符$移動到行尾,g_移動到行尾非空白字符記住常用的0和$就可以滿足日常需求了9、Vim頁面移動
翻頁命令太多, 2/8定律,記住常見的就能滿足需求gg/G移動到文件開頭和結尾,你可以使用ctrl+o快速返回H/M/L跳轉到屏幕的開頭(Head) ,中間(Middle)和結尾(Lower)Ctrl+u. ctrl+f..上下翻頁. (upword/forward)。zz 把屏幕置為中間
10、Vim快速刪除:
Vim在normal模式下使用x快速刪除一一個字符使用d (delete)配合文本對象快速刪除一個單詞daw (d aroundword)d和x都可以搭配數字來執行多次11、Vim快速修改:
常用有三個, r (replace) , C (change) , s(substitute)normal模式下使用r可以替換一個字符。s替換並進入插入模式使用c配合文本對象,我們可以快速進行修改12、Vim查詢:
使用/或者?進行前向或者反向搜索使用n/N跳轉到下一個或者上一一個匹配使用*或者上面是一些常用操作的整理。
----分割線-
下面是個人安裝的vim和相關插件的記錄:
MacVim下載地址:
https://github.com/macvim-dev/macvim/releases/tag/snapshot-161
直接安裝:
下載插件:
創建目錄:
克隆插件
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim配置和設置插件:
詳細的配置文件
"*****************************用戶自定義設置*******************************""--單詞補全" u [小寫] --單步復原 [非插入模式]" U [大寫] --整行復原 [非插入模式]
" :set syntax=cpp --手動選擇語法高亮 [或 :set filetype=cpp]" :%!xxd --轉儲二進位文件,以十六進位形式顯示" :%!xxd -r --還原二進位文件
"********************************設置快捷鍵*******************************"" Ctrl+D 刪除當前行mapddaimapdda
" Ctrl+N 顯示緩衝區的下個文件並留在插入模式[插入模式]map:confirm bnextAimap:confirm bnextA
"********************************設置編碼*******************************""設置換行編碼:set fileformats=unix,dos,mac
"設置Vim 內部使用的字符編碼方式,包括 Vim 的 buffer (緩衝區)、菜單文本、消息文本等set encoding=utf-8
"設置文件編碼if has("win32")set fileencoding=chineseelseset fileencoding=utf-8endif
"Vim 啟動時會按照它所列出的字符編碼方式逐一探測即將打開的文件的字符編碼方式"並把fileencoding設置為探測出的編碼方式set fileencodings=ucs-bom,utf-8,chines
" 解決菜單亂碼source $VIMRUNTIME/delmenu.vimsource $VIMRUNTIME/menu.vim
" 解決consle輸出亂碼language messages zh_CN.utf-8
"********************************基本設置******************************"
colorscheme desert " 著色模式:灰色背景set guifont=Monaco:h14
set tabstop=4 " 設置tab鍵的寬度set shiftwidth=4 " 換行時行間交錯使用4個空格set autoindent " 自動對齊set backspace=2 " 設置退格鍵可用set cindent shiftwidth=4 " 自動縮進4空格set smartindent " 智能自動縮進set ai! " 設置自動縮進set nu! " 顯示行號set showmatch " 顯示括號配對情況set mouse=a " 啟用滑鼠set ruler " 右下角顯示光標位置的狀態行set incsearch " 查找book時,當輸入/b時會自動找到set hlsearch " 開啟高亮顯示結果set incsearch " 開啟實時搜索功能set nowrapscan " 搜索到文件兩端時不重新搜索set nocompatible " 關閉兼容模式set cursorline " 突出顯示當前行set hidden " 允許在有未保存的修改時切換緩衝區set list " 顯示Tab符,使用一高亮豎線代替set listchars=tab:\|\ " 顯示Tab符,使用一高亮豎線代替set noswapfile " 設置無交換區文件"set writebackup " 設置無備份文件set nobackup " 設置無備份文件set autochdir " 設定文件瀏覽器目錄為當前目錄set foldmethod=syntax " 選擇代碼摺疊類型set foldlevel=100 " 禁止自動摺疊set laststatus=2 " 開啟狀態欄信息set cmdheight=2 " 命令行的高度,默認為1,這裡設為2set showtabline=2 " 設置默認顯示標籤set clipboard+=unnamed " 與系統公用剪貼板set autoread " 當文件在外部被修改,自動更新該文件set scrolloff=5 " 設定光標離窗口上下邊界 5 行時窗口自動滾動set guioptions-=T " 去掉上方工具欄set autochdir " 自動切換到當前目錄"set autoread " 自動檢測並加載外部對文件的修改"set autowrite " 自動檢測並加載外部對文件的修改"set showcmd " 命令欄顯示命令 "set ignorecase smartcase " 搜索時智能忽略大小寫syntax enable " 打開語法高亮syntax on " 開啟文件類型偵測if has("gui_running") "winpos 20 20 " 指定窗口出現的位置,坐標原點在屏幕左上角 "set lines=20 columns=90 " 指定窗口大小,lines為高度,columns為寬度 "set guioptions-=m " 隱藏菜單欄 "set guioptions-=T " 隱藏工具欄 "set guioptions-=L " 隱藏左側滾動條 "set guioptions-=r " 隱藏右側滾動條 set guioptions+=b " 顯示底部滾動條 set nowrap " 設置不自動換行endif
"*****************************設置狀態欄*************************************"
let &statusline=' %t %{&mod?(&ro?"*":"+"):(&ro?"=":" ")} %1*|%* %{&ft==""?"any":&ft} %1*|%* %{&ff} %1*|%* %{(&fenc=="")?&enc:&fenc}%{(&bomb?",BOM":"")} %1*|%* %=%1*|%* 0x%B %1*|%* (%l,%c%V) %1*|%* %L %1*|%* %P'
"******************************* 引號 && 括號自動匹配*******************************"
:inoremap ( ()i:inoremap )=ClosePair(')'):inoremap { {}i:inoremap }=ClosePair('}'):inoremap [ []i:inoremap ]=ClosePair(']'):inoremap < <>i:inoremap >=ClosePair('>'):inoremap " ""i:inoremap ' ''i:inoremap ` ``i
function ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\" else return a:char endifendf"配置插件set rtp+=~/.vim/bundle/Vundle.vimcall vundle#begin() Plugin 'gmarik/Vundle.vim'Plugin 'scrooloose/nerdtree'
call vundle#end()
" NerdTree才插件的配置信息""將F2設置為開關NERDTree的快捷鍵map:NERDTreeToggle""修改樹的顯示圖標let g:NERDTreeDirArrowExpandable = '+'let g:NERDTreeDirArrowCollapsible = '-'""窗口位置let g:NERDTreeWinPos='left'""窗口尺寸let g:NERDTreeSize=30""窗口是否顯示行號let g:NERDTreeShowLineNumbers=1""不顯示隱藏文件let g:NERDTreeHidden=0接下來直接執行
安裝完成。
參考連結:
https://www.imooc.com/video/19452
公眾號:
thelostworld:
個人知乎:
https://www.zhihu.com/people/fu-wei-43-69/columns
個人簡書:
https://www.jianshu.com/u/bf0e38a8d400