Wilhel

Wilhel

vim編輯器

基本操作#

命令行模式#

  • :q 退出(關閉窗口)
  • :w 保存(寫)
  • :wq 保存然後退出
  • :e {文件名} 打開要編輯的文件
  • :ls 顯示打開的緩存
  • :help {標題} 打開幫助文檔
    • :help :w 打開 :w 命令的幫助文檔
    • :help w 打開 w 移動的幫助文檔

移動 - 大多數情況在正常模式#

  • 基本移動: hjkl (左,下,上,右)
  • 詞: w (下一個詞), b (詞初), e (詞尾)
  • 行: 0 (行初), ^ (第一個非空格字符), $ (行尾)
  • 屏幕: H (屏幕首行), M (屏幕中間), L (屏幕底部)
  • 翻頁: Ctrl-u (上翻), Ctrl-d (下翻)
  • 文件: gg (文件頭), G (文件尾)
  • 行數: :{行數}<CR> 或者 {行數}G ({行數} 為行數)
  • 雜項: % (找到配對,比如括號或者 /* */ 之類的註釋對)
  • 查找: f{字符}, t{字符}, F{字符}, T{字符}
    • 查找 / 到向前 / 向後在本行的 {字符}
    • , / ; 用於導航匹配
  • 搜索: /{正則表達式}n / N 用於導航匹配

選擇 - 可視化模式#

  • 可視化:v
  • 可視化行: V
  • 可視化塊:Ctrl+v

編輯#

  • i 進入插入模式
    • 但是對於操縱 / 編輯文本,不單想用退格鍵完成
  • O / o 在之上 / 之下插入行
  • d{移動命令} 刪除 {移動命令}
    • 例如,dw 刪除詞, d$ 刪除到行尾, d0 刪除到行頭。
  • c{移動命令} 改變 {移動命令}
    • 例如,cw 改變詞
    • 比如 d{移動命令} 再 i
  • x 刪除字符(等同於 dl
  • s 替換字符(等同於 xi
  • 可視化模式 + 操作
    • 選中文字, d 刪除或者 c 改變
  • u 撤銷, <C-r> 重做
  • y 複製 / “yank” (其他一些命令比如 d 也會複製)
  • p 粘貼
  • 更多值得學習的:比如 ~ 改變字符的大小寫

計數#

  • 3w 向前移動三個詞
  • 5j 向下移動 5 行
  • 7dw 刪除 7 個詞

修飾語#

你可以用修飾語改變 “名詞” 的意義。修飾語有 i,表示 “內部” 或者 “在內 “,和 a,表示” 周圍 “。

  • ci( 改變當前括號內的內容
  • ci[ 改變當前方括號內的內容
  • da' 刪除一個單引號字符串,包括周圍的單引號

演示#

# fizzbuzz.py
import sys

def fizz_buzz(limit):
    for i in range(1,limit+1):
        if i % 3 == 0:
            print('fizz', end="")
        if i % 5 == 0:
            print('buzz', end="")
        if i % 3 and i % 5:
            print(i)
        else:
            print()

def main():
    fizz_buzz(int(sys.argv[1]))
    
if __name__ == '__main__':
    main()
  • . 重複上一次修改
  • sys.argv[1] 傳入的第一個參數

自定義 Vim#

vim ~/.vimrc
vim /etc/vim/vimrc # debian

擴展 Vim#

常用推薦插件:

講師們的開源配置文件:

 Vim Awesome

其他程序的 Vim 模式#

Shell#

Bash set -o vi

Zsh bindkey -v

Fish fish_vi_key_bindings

通用 export EDITOR=vim

Readline#

vim ~/.inputrc
vim /etc/inputrc # debian

set editing-mode vi # 開啟vi編輯模式,python REPL 支持Vim快捷鍵

Vim 進階#

搜索和替換#

:s (替換)命令(文檔)。

  • %s/foo/bar/g
    • 在整個文件中將 foo 全局替換成 bar
  • %s/\[.*\](\(.*\))/\1/g
    • 將有命名的 Markdown 鏈接替換成簡單 URLs

多窗口#

  • 用 :sp / :vsp 來分割窗口
  • 同一個緩存可以在多個窗口中顯示。

#

  • q{字符} 來開始在寄存器{字符}中錄製宏
  • q停止錄製
  • @{字符} 重放宏
  • 宏的執行遇錯誤會停止
  • {計數}@{字符}執行一個宏 {計數} 次
  • 宏可以遞歸
    • 首先用q{字符}q清除宏
    • 錄製該宏,用 @{字符} 來遞歸調用該宏 (在錄製完成之前不會有任何操作)
  • 例子:將 xml 轉成 json (file)
    • 一個有 “name” / “email” 鍵對象的數組
    • 用一個 Python 程序?
    • 用 sed / 正則表達式
      • g/people/d
      • %s/<person>/{/g
      • %s/<name>\(.*\)<\/name>/"name": "\1",/g
    • Vim 命令 / 宏
      • Gddggdd 刪除第一行和最後一行
      • 格式化最後一個元素的宏 (寄存器 e
        • 跳轉到有 <name> 的行
        • qe^r"f>s": "<ESC>f<C"<ESC>q
      • 格式化一個的宏
        • 跳轉到有 <person> 的行
        • qpS{<ESC>j@eA,<ESC>j@ejS},<ESC>q
      • 格式化一個標籤然後轉到另外一個的宏
        • 跳轉到有 <person> 的行
        • qq@pjq
      • 執行宏到文件尾
        • 999@q
      • 手動移除最後的 , 然後加上 [ 和 ] 分隔符

擴展資料#

課後練習#

  1. 完成 vimtutor。備註:它在一個 80x24(80 列,24 行) 终端窗口看起來效果最好。
  2. 下載我們提供的 vimrc,然後把它保存到 ~/.vimrc。 通讀這個註釋詳細的文件 (用 Vim!), 然後觀察 Vim 在這個新的設置下看起來和使用起來有哪些細微的區別。
  3. 安裝和配置一個插件: ctrlp.vim.
    1. 用 mkdir -p ~/.vim/pack/vendor/start 創建插件文件夾
    2. 下載這個插件: cd ~/.vim/pack/vendor/start; git clone https://github.com/ctrlpvim/ctrlp.vim
      # 下載後需在 vimrc 中添加如下配置
      set runtimepath^=~/.vim/pack/vendor/start/ctrlp.vim 
      
    3.  閱讀這個插件的 [文檔](https://github.com/ctrlpvim/ctrlp.vim/blob/master/readme.md)。嘗試用 CtrlP 來在一個工程文件夾裡定位一個文件,打開 Vim, 然後用 Vim 命令控制行開始 `:CtrlP`.
    4.  自定義 CtrlP:添加 [configuration](https://github.com/ctrlpvim/ctrlp.vim/blob/master/readme.md#basic-options) 到你的 `~/.vimrc` 來用按 Ctrl-P 打開 CtrlP
    
  4. 練習使用 Vim, 在你自己的機器上重做 演示
  5. 下個月用 Vim 完成_所有的_文件編輯。每當不夠高效的時候,或者你感覺 “一定有一個更好的方式” 時, 嘗試求助搜索引擎,很有可能有一個更好的方式。如果你遇到難題,可以來我們的答疑時間或者給我們發郵件。
  6. 在其他工具中設置 Vim 快捷鍵 (見上面的操作指南)。
  7. 進一步自定義你的 ~/.vimrc 和安裝更多插件。
    使用 vim-plug 安裝插件:
    1. 安裝 vim-plug
     $ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
    
    1. 修改~/.vimrc
     call plug#begin()
     Plug 'preservim/NERDTree' #需要安裝的插件 NERDTree
     Plug 'wikitopian/hardmode'  #安裝 hardmode
     ..... # 更多插件
     call plug#end()
    
    1. 在 vim 命令行中執行 :PlugInstall
  8. (高階)用 Vim 宏將 XML 轉換到 JSON (例子文件)。嘗試著先完全自己做,但是在你卡住的時候可以查看上面 章節。
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。