vim使用技巧整理

vim操作非常多,这里只列出常用的,并且是具有代表性的。

1、常用的Vim配置,在~/.vimrc中

    syntax on       支持语法高亮
    set nu          显示行号
    set nonu      不显示行号
    set ai          设置自动缩进
    set shiftwidth=4   设置自动缩进 4 个空格, 当然要设自动缩进先.
    set sts=4          即设置 softtabstop 为 4. 输入 tab 后就跳了 4 格.
    set tabstop=4      实际的 tab 即为 4 个空格, 而不是缺省的 8 个.
    set expandtab      在输入 tab 后, vim 用恰当的空格来填充这个 tab.
    set hls 打开搜索高亮

    set nohls 取消搜索高亮 

    set list : 显示特殊字符
    set nolist 

2、跳转、插入、拷贝、删除、查找、替换

(1)跳转
    按单词跳转:w向后跳,b向前跳,e跳转到单词尾
    在行内跳转:0跳转到行首,$跳转到行尾
    按行跳转:gg跳转到第一行,nG跳转到第n行,G跳转到最后一行
    多行跳转:ctrl f 向后跳一页,ctrl b 向前跳一页
                      ctrl d向后跳半页,ctrl u向前跳半页
(2)插入
    a 在当前字符后插入, i 在当前字符前插入
    A 在当前行尾插入, I 在当前行首插入
    o 在当前行后创建新行插入, O 在当前行前一行创建新行插入
(3)拷贝
    yw 拷贝当前单词
    y$ 拷贝当前字符到行尾的内容
    yy 拷贝整行
    使用p将拷贝内容粘贴到当前行的下一行,P为下一行
(4)删除
    x 删除当前字符
    dw 删除当前单词
    d$或D 删除当前字符到行尾的内容 
    d0 删除当前字符到行首的内容
    dd 剪切整行,可以使用p命令拷贝
(5)查找
    /xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串
    / 表示向下查找, ? 表示向上查找;查找到以后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找
    /str,如果有空格则需要:/str str2/ 

(6)替换

    单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S.
    :s/vivian/sky/ 替换当前行第一个 vivian 为 sky
    :s/vivian/sky/g 替换当前行所有 vivian 为 sky
     :s/vivian/sky/c 替换当前行第一个 vivian 为 sky,并且提示用户确认
    :n,ms/vivian/sky/ 替换第n行开始到第m行中每一行的第一个 vivian 为 sky
    :n,+ms/vivian/sky/ 替换第n行开始到其后面m行每一行的第一个 vivian 为 sky
    :n,$s/vivian/sky/g 替换第n行开始到最后一行中每一行所有 vivian 为 sky
        n 为数字,若 n 为 .,表示从当前行开始到最后一行
    :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
    :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
        可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
    :s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
    :%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

3、多文件编辑

(1)打开多个文件
在已打开的文件中分割窗口:
    :sp filename vim将分割出一个横向窗口, 并在该窗口中打开新文件.
    :vsp filename vim将在右边分割出一个窗口, 并在该窗口中打开新文件.
    如果:sp 或 :vsp没有指定文件,则在新窗口中打开原文件。
命令行打开多个文件
    打开的两个文件上下窗口分布 : vim -o file1 file2
    打开的两个文件左右窗口分布 : vim -O file1 file2
文件的切换和保存退出    
    ctrl+w w来在vim打开的多个窗口中切换.
    ctrl+w q来关闭多个窗口中当前的窗口.
    使用:qa关闭所有打开的文件,:wq保存所有打开的文件
(2)多文件比较
在diff命令可用时,使用vimdiff file1 file2进行文件比较,或 使用 vim -d file1 file2
只显示差异的部分,左右窗口时可以同步滚动;
相关操作命令:
    命令行模式先,使用 ]c 跳转到下一差一点,[c 反向跳转;
    将某个差异点中当前文件内容复制到另一文件里使用dp命令;
    将另一个文件的差异部分复制到当前行使用命令do命令;

4、可视化操作

(1)使用ctrl v进入可视化模式
    使用hjkl进行可视化块选择,可以连续选中多行多列进行统一的操作。
    可以使用的操作:~大小写转换,d 剪切, y 复制等
(2)小技巧——对多行进行同一操作方法:
    ctrl v进行可视化模式,使用j或者k选中多行;
    I或者A进行插入模式,进行相应修改,$可以跳转到行尾;
    按两次Esc键以上操作会应用到选中的所有行。

5、其它快捷操作

(1)vim中去除空行或行末的^M:dos2unix ufile
(2)快速复制命令,在插入模式下,ctrl y复制上一行同一位置的内容,ctrl e复制下一行内容
(3)ctrl p 自动补全,ctrl n为向后搜索补全内容
(4)使用 u 撤销上次的操作,ctrl+r恢复上次的撤销。 
(5)打开文件时 +n 可以自动跳转到第n行
(6) ~命令可以直接切换大小写,修改当前字符,可以直接修改可视化块
 
原文地址:https://www.cnblogs.com/hancq/p/5310954.html