Fork me on GitHub

vim的使用

一、一般模式:光标的移动、复制粘贴、搜索替换

移动光标:

向左移动一个字符:h 或 ←
向右移动一个字符:l 或 →
向上移动一个字符:k 或 ↑
向下移动一个字符:j 或 ↓
向左移动n个字符:n + h(其他同理),如10h
向右移动这一行的n个字符(会换到下一行):n + space,如20space
屏幕向上移动一页:Ctrl + b
屏幕向下移动一页:Ctrl + f
屏幕向上移动半页:Ctrl + u
屏幕向下移动半页:Ctrl + d
移动到非空格的下一行:+
移动到非空格的上一行:-
移动到屏幕最上方那一行的第一个字符:H
移动到屏幕最中间那一行的第一个字符:M
移动到屏幕最下方那一行的第一个字符:L
移动到这个文件的最后一行:G
移动到这个文件的第n行:nG
移动到这个文件的第一行:gg
向下移动n行:n + enter,如10enter

加粗部分为常用,以下同理

搜索替换:

向光标往下搜索一个word的字符串:/word
向光标往上搜索一个word的字符串:?word
重复前一个搜寻动作 ,如果刚刚我们执行 /word 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 word 的字符串。如果是?word的话就向上搜寻。按下N则反向
在第n1行与第n2行之间寻找word1这个字符串,并将给字符串取代为word2:n1,n2s/word1/word2/g, 如:10,100s/word/WORD/g
从第1行到最后一行寻找word1字符串,取代为word2: :1,$s/word1/word2/g
从第1行到最后一行寻找word1字符串,取代为word2,取代前提示用户确认(confirm)是否需要取代: :1,$s/word1/word2/gc

删除

向前(后)删除一个字符:x(X),相当于backspace
连续向后删除n个字符: nx,如10x
删除光标所在的一整行:dd
删除光标所在的向下n行:ndd
删除光标所在到第一行的所有数据:d1G
输出光标所在到最后一行的所有数据:dG
删除光标所在到该行最后一个字符:d$
删除光标所在到该行第一个字符:d0

复制

复制光标所在的那一行:yy
复制光标所在的向下n行:nyy
复制光标所在行到第一行的所有数据:y1G
复制光标所在行到最后一行的所有数据:yG
复制光标所在到该行最后一个字符:y$
复制光标所在到该行第一个字符:y0

粘贴

将已复制的数据在光标下(上)一行贴上:p(P);
将光标所在行与 下一行的数据结合成一行: J
重复删除多个数据:c,如向下删除10行:10cj
复原前一个动作:u
重复上一个动作:Ctrl + r

二、一般模式到编辑模式的切换

进去输入模式

  • i/I
    从目前光标所在处输入:i
    从目前所在行的第一个非空格符处开始输入:I

  • a/A
    从目前光标所在的下一个字符处开始输入:a
    从光标所在行的最后一个字符处开始输入:A

  • o/O
    在光标所在的下一行输入新的一行:o
    在光标所在的上一行输入新的一行:O

进入取代模式

  • r/R
    取代光标所在的那一个字符一次:r
    一直取代光标所在的字符,直到按esc

三、一般模式到命令行模式的切换

指令行的存储、离开等

保存编辑: :w
强制写入: :w!
退出: :q
强制退出,不保存修改: :q!
保存修改后退出: :wq
将修改后的数据另存为一个文件: :w filename
在当前编辑的数据中,读入另一个文件的数据: :r filename
将n1到n2的内容存储成另一个文件filename: :n1,n2 w filename
暂时离开 vi 到指令行模式下执行 command 的显示结果: :!command ;例如:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的文件信息

vim环境的变更

显示行号: :set nu
取消显示行号: :set nonu

-------------本文结束感谢您的阅读-------------