如何讓 Vim 成為運維們的神器

Linux雲端計算資料自學發表於2018-12-14

640?


Vim 是一個上古神器,本篇文章主要持續總結使用 Vim 的過程中不得不瞭解的一些指令和注意事項,以及持續分享一個運維工作者不得不安裝的一些外掛,而關於 Vim 的簡介,主題的選擇,以及為何使用 vim-plug 來管理外掛等內容,有興趣的同學下來可以自己瞭解和對比下。


安裝

sudo apt-get install vim  // Ubuntu


其他平臺,可以自行谷歌


新手指南

vimtutor  // vim 教程


上面是史上最簡單,最全面的 Vim 基礎教程,至今無人超越


下面是作者基於上面的歸納


移動游標

# hjkl

# 2w 向前移動兩個單詞

# 3e 向前移動到第 3 個單詞的末尾

# 0 移動到行首

# $ 當前行的末尾

# gg 檔案第一行

# G 檔案最後一行

# 行號+G 指定行

# <ctrl>+o 跳轉回之前的位置

# <ctrl>+i 返回跳轉之前的位置


退出

# <esc> 進入正常模式

# :q! 不儲存退出

# :wq 儲存後退出


刪除

# x 刪除當前字元

# dw 刪除至當前單詞末尾

# de 刪除至當前單詞末尾,包括當前字元

# d$ 刪除至當前行尾

# dd 刪除整行

# 2dd 刪除兩行


修改

# i 插入文字

# A 當前行末尾新增

# r 替換當前字元

# o 開啟新的一行並進入插入模式


撤銷

# u 撤銷

# <ctrl>+r 取消撤銷


複製貼上剪下

# v 進入可視模式

# y 複製

# p 貼上

# yy 複製當前行

# dd 剪下當前行


狀態

# <ctrl>+g 顯示當前行以及檔案資訊


查詢

# / 正向查詢(n:繼續查詢,N:相反方向繼續查詢)

# ? 逆向查詢

# % 查詢配對的 {,[,(

# :set ic 忽略大小寫

# :set noic 取消忽略大小寫

# :set hls 匹配項高亮顯示

# :set is 顯示部分匹配


替換

# :s/old/new 替換該行第一個匹配串

# :s/old/new/g 替換全行的匹配串

# :%s/old/new/g 替換整個檔案的匹配串


執行外部命令

# :!shell 執行外部命令



.vimrc

.vimrc 是 Vim 的配置檔案,需要我們自己建立

cd Home               // 進入 Home 目錄

touch .vimrc          // 配置檔案

 

# Unix

# vim-plug

# Vim

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \

    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

# Neovim

curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \

    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim


其他平臺,可以檢視 vim-plug


基本配置

取消備份

set nobackup

set noswapfile


檔案編碼

set encoding=utf-8


顯示行號

set number


取消換行

set nowrap


顯示游標當前位置

set ruler


設定縮排

set cindent

 

set tabstop=2

set shiftwidth=2


突出顯示當前行

set cursorline


查詢

set ic

set hls

set is


左下角顯示當前 vim 模式

set showmode


程式碼摺疊

# 啟動 vim 時關閉摺疊程式碼

set nofoldenable


主題

syntax enable

set background=dark

colorscheme solarized


外掛配置

樹形目錄

Plug 'scrooloose/nerdtree'

Plug 'jistr/vim-nerdtree-tabs'

Plug 'Xuyuanp/nerdtree-git-plugin'

 

autocmd vimenter * NERDTree

map <C-n> :NERDTreeToggle <CR>

let NERDTreeShowHidden=1

let g:NERDTreeShowIgnoredStatus = 1

let g:nerdtree_tabs_open_on_console_startup=1

let g:NERDTreeIndicatorMapCustom = {

    \ "Modified"  : "✹",

    \ "Staged"    : "✚",

    \ "Untracked" : "✭",

    \ "Renamed"   : "➜",

    \ "Unmerged"  : "═",

    \ "Deleted"   : "✖",

    \ "Dirty"     : "✗",

    \ "Clean"     : "✔︎",

    \ 'Ignored'   : '☒',

    \ "Unknown"   : "?"

    \ }

 

# o 開啟關閉檔案或目錄

# e 以檔案管理的方式開啟選中的目錄

# t 在標籤頁中開啟

# T 在標籤頁中開啟,但游標仍然留在 NERDTree

# r 重新整理游標所在的目錄

# R 重新整理當前根路徑

# X 收起所有目錄

# p 小寫,跳轉到游標所在的上一級路徑

# P 大寫,跳轉到當前根路徑

# J 到第一個節點

# K 到最後一個節點

# I 顯示隱藏檔案

# m 顯示檔案操作選單

# C 將根路徑設定為游標所在的目錄

# u 設定上級目錄為根路徑

# ctrl + w + w 游標自動在左右側視窗切換

# ctrl + w + r 移動當前視窗的佈局位置

# :tabc 關閉當前的 tab

# :tabo   關閉所有其他的 tab

# :tabp   前一個 tab

# :tabn   後一個 tab

# gT      前一個 tab

# gt      後一個 tab


程式碼,引號,路徑補全

Plug 'Valloric/YouCompleteMe'

Plug 'Raimondi/delimitMate'

Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }


語法高亮,檢查


Plug 'sheerun/vim-polyglot'

Plug 'w0rp/ale'

 

let g:ale_linters = {

\    'javascript': ['eslint'],

\    'css': ['stylelint'],

\}

let g:ale_fixers = {

\    'javascript': ['eslint'],

\    'css': ['stylelint'],

\}

let g:ale_fix_on_save = 1

 

let g:ale_sign_column_always = 1

let g:ale_sign_error = '●'

let g:ale_sign_warning = '▶'

 

nmap <silent> <C-k> <Plug>(ale_previous_wrap)

nmap <silent> <C-j> <Plug>(ale_next_wrap)


檔案,程式碼搜尋

Plug 'rking/ag.vim'

Plug 'kien/ctrlp.vim'


加強版狀態列

Plug 'vim-airline/vim-airline'

Plug 'vim-airline/vim-airline-themes'

 

let g:airline_theme='papercolor'


程式碼註釋

Plug 'scrooloose/nerdcommenter'

 

# <leader>cc // 註釋

# <leader>cm 只用一組符號註釋

# <leader>cA 在行尾新增註釋

# <leader>c$ /* 註釋 */

# <leader>cs /* 塊註釋 */

# <leader>cy 註釋並複製

# <leader>c<space> 註釋/取消註釋

# <leader>ca 切換 // 和 /* */

# <leader>cu 取消註釋

 

let g:NERDSpaceDelims = 1

let g:NERDDefaultAlign = 'left'

let g:NERDCustomDelimiters = {

            \ 'javascript': { 'left': '//', 'leftAlt': '/**', 'rightAlt': '*/' },

            \ 'less': { 'left': '/**', 'right': '*/' }

        \ }


git

Plug 'airblade/vim-gitgutter'

Plug 'tpope/vim-fugitive'


Markdown

Plug 'suan/vim-instant-markdown'

 

let g:instant_markdown_slow = 1

let g:instant_markdown_autostart = 0

# :InstantMarkdownPreview


Emmet

Plug 'mattn/emmet-vim'

 

let g:user_emmet_leader_key='<Tab>'

let g:user_emmet_settings = {

         \ 'javascript.jsx' : {

            \ 'extends' : 'jsx',

        \ },

         \ }


html 5


Plug 'othree/html5.vim'


css 3

Plug 'hail2u/vim-css3-syntax'

Plug 'ap/vim-css-color'

 

augroup VimCSS3Syntax

  autocmd!

 

  autocmd FileType css setlocal iskeyword+=-

augroup END


JavaScipt

Plug 'pangloss/vim-javascript'

 

let g:javascript_plugin_jsdoc = 1

let g:javascript_plugin_ngdoc = 1

let g:javascript_plugin_flow = 1

set foldmethod=syntax

let g:javascript_conceal_function             = "ƒ"

let g:javascript_conceal_null                 = "ø"

let g:javascript_conceal_this                 = "@"

let g:javascript_conceal_return               = "⇚"

let g:javascript_conceal_undefined            = "¿"

let g:javascript_conceal_NaN                  = "ℕ"

let g:javascript_conceal_prototype            = "¶"

let g:javascript_conceal_static               = "•"

let g:javascript_conceal_super                = "Ω"

let g:javascript_conceal_arrow_function       = "⇒"

let g:javascript_conceal_noarg_arrow_function = ""

let g:javascript_conceal_underscore_arrow_function = ""

set conceallevel=1


React

Plug 'mxw/vim-jsx'

 

let g:jsx_ext_required = 0


Prettier

Plug 'prettier/vim-prettier', {

  \ 'do': 'yarn install',

  \ 'for': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'graphql'] }

 

let g:prettier#config#bracket_spacing = 'true'

let g:prettier#autoformat = 0

autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql PrettierAsync

 

# :Prettier

作者:楓上霧棋

來源:segmentfault.com/a/1190000011466454


12月雲端計算免費課程火爆來襲,免費深入瞭解雲端計算技術,揭祕運維行業發展,與技術大牛面對面交流,幫你尋找屬於你的努力方向,抓住2018年最後一次免費學習的機會,逆襲2019~~



12月雲端計算免費訓練營

時間

12月21日 - 12月27日 (為期5天,22/23日休息)

課程內容

  • 什麼是Linux、雲端計算、虛擬化;

  • KVM虛擬化實戰;

  • Linux作業系統由來;

  • 企業級Linux伺服器安裝方案;

  • 破解Linux系統密碼;

  • Linux命令列格式;

  • Linux下目錄和檔案管理;

  • FTP伺服器演示;

  • Web伺服器演示;

  • DNS伺服器演示;

  • 初識網路工程;

  • Linux雲端計算行業發展前景等等。

地點達內全國各中心校區,就近選擇。

講師:行業大咖,技術大牛面授課程。

免費報名方式長按下方二維碼即可免費申請

640?wx_fmt=png

*本次免費訓練營異常火爆,座位有限,各位童鞋抓緊時間,先報先得。


PS:記得查收小編送你的免費大禮包呦~

福利 | 一萬多套PPT模板等你免費來拿!無條件領取!

免費送 | 1000多套簡歷模板免費拿,附贈簡歷製作教程!

免費領 | 《Shell指令碼 100例》電子書免費拿,運維必備乾貨~

640?640

▼▼點選【閱讀原文】,5天運維免費課程,開講在即!

相關文章