博客 / 詳情

返回

Y 分鐘速成 vim

源代碼下載: LearnVim-cn.txt

Vim
(Vi IMproved) 是 Unix 上的流行編輯器 vi 的克隆版本。這個文本編輯器
是為性能和提升效率而設計的,並且在大多數基於 unix 的系統上普遍存在。
它有大量的快捷鍵可用來快速導航到文件的特定位置,以便進行快速編輯。

Vim 導航基礎

    vim <filename>   # 在 Vim 中打開 <filename>
    :q               # 退出 Vim
    :w               # 保存當前文件
    :wq              # 保存文件並退出 Vim 
    :q!              # 退出 Vim 並且不保存文件
                     # ! *強制* 執行 :q, 因此沒有保存就退出 Vim
    :x               # 保存文件並且退出 Vim, 是 :wq 的簡寫版本

    u                # 撤銷
    CTRL+R           # 重做

    h                # 左移一個字符
    j                # 下移一行
    k                # 上移一行
    l                # 右移一個字符

    # 在行內移動

    0                # 移到行首
    $                # 移到行尾
    ^                # 移到行內的第一個非空白字符處

    # 在文本中查找

    /word            # 光標之後的所有該詞都高亮顯示
    ?word            # 光標之前的所有該詞都高亮顯示
    n                # 查找後將光標移到該詞的下一個出現位置
    N                # 光標移到該詞的上一個出現位置

    :%s/foo/bar/g    # 將文件每一行上的所有 'foo' 都改成 'bar'
    :s/foo/bar/g     # 將當前行上的所有 'foo' 都改成 'bar'

    # 跳到字符處

    f<字符>         # 向前跳移到 <字符> 上
    t<字符>         # 向前跳移到 <字符> 的左側

    # 例如,    
    f<               # 向前跳移到 < 上
    t<               # 向前跳移到 < 的左側
    
    # 按詞移動
    # 默認一個單詞由字母,數字和下劃線組成

    w                # 移動到下一個詞首
    b                # 移動到前一個詞首
    e                # 移動到下一個詞尾
    

    # 移動的其它命令

    gg               # 移到文件頂部
    G                # 移到文件末尾
    :NUM             # 移到第 NUM 行 (NUM 是任意數字)
    H                # 移到屏幕頂部
    M                # 移到屏幕中間位置
    L                # 移到屏幕末尾

模式:

Vim 基於 模式 這個概念。

命令模式 - Vim 啓動後就處於這個模式,用於導航和操作命令
插入模式 - 用於在你的文件中進行修改
可視模式 - 用於高亮文本並對它們進行操作
Ex 模式 - 用於跳到底部的 ':' 提示行上輸入命令

    i                # 在光標位置前,將 Vim 切換到插入模式
    a                # 在光標位置後,將 Vim 切換到插入模式
    v                # 將 Vim 切換到可視模式
    :                # 將 Vim 切換到 ex 模式
    <esc>            # 無論你當前處於什麼模式,都返回到命令模式

    # 複製和粘貼文本

    y                # 複製所選的內容
    yy               # 複製當前行
    d                # 刪除所選的內容
    dd               # 刪除當前行
    p                # 在當前光標位置後粘貼複製的文本
    P                # 在當前光標位置前粘貼複製的文本
    x                # 刪除當前光標位置處的字符

Vim 的 '語法'

Vim 可以被認為是按 '動詞-修飾詞-名詞' 格式編排的一組命令:

動詞 - 你的動作
修飾詞 - 你如何執行你的動作
名詞 - 你的動作所作用於的對象

關於 '動詞','修飾詞',和 '名詞' 的幾個重要例子:

    # '動詞'
    
    d                # 刪除
    c                # 修改
    y                # 複製
    v                # 可視化選擇

    # '修飾詞'

    i                # 內部的
    a                # 周圍的
    NUM              # 數字 (NUM 是任意數字)
    f                # 查找文本並位於其上
    t                # 查找文本並停於其前面
    /                # 從光標處開始查找字符串
    ?                # 在光標前查找字符串

    # '名詞'

    w                # 詞
    s                # 句子
    p                # 段落
    b                # 塊
    
    # 示例 '語句' 或命令

    d2w              # 刪除 2 個詞
    cis              # 修改段落內的內容
    yip              # 複製段落內的內容 (複製你所在的段落)
    ct<              # 修改直到括號開啓處
                     # 對你的當前位置直到下個括號開啓處的內容進行修改
    d$               # 刪除直到行尾

一些快捷鍵和技巧

    <!--TODO: Add more!-->
    >                # 將所選內容縮進一級
    <                # 將所選內容取消縮進一級
    :earlier 15m     # 將文檔還原到 15 分鐘前的狀態
    :later 15m       # 逆轉上述命令
    ddp              # 相鄰行交換位置,先 dd 再 p
    .                # 重複之前動作

宏基本上來説就是可錄製的動作。
當你開始錄製宏時,它會記錄你使用的 每個 動作和命令,
直到你停止錄製。當調用宏時,它會將這個完全相同的動作和命令序列
再次應用於所選文本之上。

    qa               # 開始錄製一個叫 'a' 的宏
    q                # 停止錄製
    @a               # 重播宏

配置 ~/.vimrc

.vimrc 可用於在啓動時對 Vim 進行配置。

這裏是一個示例 ~/.vimrc 文件:

" 示例 ~/.vimrc
" 2015.10 

" 需要 Vim iMproved 版本
set nocompatible

" 根據文件名檢測文件類型,以便能進行智能自動縮進等操作。
filetype indent plugin on

" 開啓語法高亮
syntax on

" 更好的命令行補全
set wildmenu

" 除了當使用大寫字母時使用大小寫無關查找
set ignorecase
set smartcase

" 當新開一行時,如果沒有開啓文件特定的縮進規則,
" 則縮進保持與你當前行一致
set autoindent

" 在左側顯示行號
set number

" 縮進選項,根據個人偏好進行修改

" 每個 TAB 的可視空格數
set tabstop=4

" 編輯時 TAB 對應的空格數
set softtabstop=4

" 當使用縮進操作 (>> 和 <<) 時縮進的空格數
set shiftwidth=4

" 將 TAB 轉換成空格
set expandtab

" 為縮進和對齊開啓智能化的 TAB 和空格切換功能
set smarttab

參考

Vim | Home

$ vimtutor

A vim Tutorial and Primer

What are the dark corners of Vim your mom never told you about? (Stack Overflow thread)

Arch Linux Wiki


有建議?或者發現什麼錯誤?在Github上開一個issue,或者發起pull request!

原著RadhikaG,並由0個好心人修改。
© 2022 RadhikaG
Translated by: Jiang Haiyun
本作品採用 CC BY-SA 3.0 協議進行許可。

user avatar cipchk 頭像 mmmy_a 頭像 geoffzhu 頭像 liyuan_5aa3282cf3353 頭像
4 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.