本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,版權歸原做者全部,若有問題請及時聯繫咱們以做處理。python
做者: Jeffrey Wanggit
PS:若有須要Python學習資料的小夥伴能夠加點擊下方連接自行獲取github
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cefvim
VIM 的三種模式,命令行模式、插入模式、末行模式 就不在此贅述了網絡
經常使用快捷鍵app
命令行模式:學習
移動光標:ui
向下左右箭頭能夠移動光標;this
將光標移動到行尾:$;spa
將光標移動到行頭:^;
將光標移動到頁尾:shift+g;
將光標移動到頁頭:1+shift+g;
移動到目標行:n+shift+g;
快速向左右移動光標:ctrl+←/→鍵;
向左或者向右移動n個字符:n+←/→鍵;
-----------------------
刪除:
刪除光標所在行:dd;
刪除光標所在行及以後的n-1行:dnd;
刪除一個字母:x (至關因而del);
刪除一個字母:X (至關因而backspace);
刪除一個詞:dw;(最好是放在單詞的首字母處)
撤銷上一步:u;
----------------------
移動單詞:
向右移動一個單詞:w;
向左移動一個單詞:b;
----------------------
複製粘貼:
複製當前光標所在行:yy;
箭頭移動到目的行粘貼:p;
複製當前光標所在行及以後的n-1行:yny;
複製一個詞:yw;
-----------------------
剪切:
剪切當前光標所在位置到行尾: d+shift+4/d+$;
剪切當前光標所在位置到行首:d+shift+6/d+^;
編輯模式:
在命令行模式下進入編輯模式,須要按下i、I、a、A、o、O、r、R這些才能進入編輯模式,通常直接按下i就行;
i是在當前光標前編輯,a是在當前光標後進行編輯,o是在當前光標的下一行進行編輯;
退出編輯模式進入命令行模式須要按下esc鍵。
末行模式:
命令行模式進入末行模式的方式:
1.:
2./ 查找,/+被查找的單詞,n是下一個,shift+n是指上一個;
3.? 查找,?+被查找的單詞,n是上一個,shift+n是下一個;
存盤指令:w;
另存指令:w 文件名;
退出指令:q;
保存並退出指令:wq;
強制退出不存盤指令:q!;
替換:%s/old/new/g;
顯示行號:set nu;
總結:
--------- 按鍵盤i鍵-------->輸入模式 (按Esc鍵回到命令模式)
|
命令模式 |
-----------輸入 ":" ------> 末行模式 (按Esc鍵回到命令模式)
三種模式的主要功能:
命令模式:複製,粘貼,刪除、移動光標、查找
編輯模式:編輯文本
末行模式:存盤、退出、替換、查找
Python對縮進比較嚴格,須要調整 ~/.vimrc
中的配置
au BufNewFile,BufRead *.py
\ set tabstop=4 |
\ set softtabstop=4 |
\ set shiftwidth=4 |
\ set textwidth=79 |
\ set expandtab |
\ set autoindent |
\ set fileformat=unix |
調整後效果以下:
粘貼代碼混亂
好比將以下 python 代碼在 vim 插入模式下,粘貼進去
a = 1
if a > 1:
print('> 1')
else:
if a = 1:
print('= 1')
else:
print('< 1')
若是不作任何設置,粘貼進去是這樣的,發現代碼錯亂
解決方法: 使用 :set paste
進入粘貼模式, :set nopaste
退出粘貼模式
粘貼模式下,粘貼效果以下
代碼摺疊
編輯 ~/.vimrc
,新增以下:
" Enable folding
set foldmethod=indent
set foldlevel=99
" 經過空格鍵快速打開和關閉摺疊
nnoremap <space> za
配置完畢後,按空格便可摺疊代碼
插件篇
vim 默認的功能最多自帶關鍵字顏色區分、自動補全等,想要一些強大的功能就須要強大的插件來完成。
如何管理插件
可使用強大的 vundle 管理
安裝 vundle
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
正克隆到 '/home/wang/.vim/bundle/Vundle.vim'...
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 3140 (delta 0), reused 0 (delta 0), pack-reused 3139
接收對象中: 100% (3140/3140), 935.39 KiB | 420.00 KiB/s, 完成.
處理 delta 中: 100% (1106/1106), 完成.
而後在 ~/.vimrc
中加入此配置
" 在此設置運行時路徑
set rtp+=~/.vim/bundle/Vundle.vim
" vundle初始化
call vundle#begin()
" 或者傳遞一個 Vundle 安裝插件的路徑
"call vundle#begin('~/some/path/here')
" 讓 Vundle 管理 Vundle, 必須
Plugin 'VundleVim/Vundle.vim'
" 保持 Plugin 命令 在 vundle#begin 和 end 之間
"每一個插件都應該在這一行以前
call vundle#end() " 這是必需的
filetype plugin indent on " 這是必需的
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line
打開vim輸入:BundleInstall。 :BundleInstall命令會安裝在.vimrc文件中列出來的全部插件。 :BundleInstall <plugin-name> 安裝指定的插件。
打開vim輸入:BundleClean 從命令行安裝vim +:BundleClean。
打開vim輸入:BundleSearch <text-list> 從命令行搜索vim +:BundleSearch <text-list>。
NERDTree 目錄樹 在 vundle 的插件範圍內,新增以下信息
" NERDTree 插件 Plugin 'git://git.wincent.com/command-t.git' Plugin 'git://github.com/scrooloose/nerdtree.git' Plugin 'git://github.com/Xuyuanp/nerdtree-git-plugin.git'
編輯 ~/.vimrc
新增以下:
map <F4> :NERDTreeToggle<CR>
而後在 vim 中執行 :PluginInstall,進入以下界面,等待安裝完畢便可
全部操做完畢後,按 F4 便可在目錄樹和代碼區切換
編輯模式運行 python
~/.vimrc
設置一下快捷鍵便可
" Python 的運行 map <F7> :call PRUN()<CR> func! PRUN() exec "w" exec "!clear" exec "!time python3 %" endfunc
按下 F7 以後,獲得運行結果