vim的模式及常用命令

vim的模式

  • 正常模式 (Normal-mode) : 左下角显示文件名或为空。

    启动vim后默认处于正常模式。不论位于什么模式,按下<Esc>(有时需要按两下)都会进入正常模式。

  • 插入模式 (Insert-mode):左下角显示–INSERT–

    在正常模式中按下i, I, a, A等键,会进入插入模式。现在只用记住按i键会进行插入模式。在插入模式中,击键时会写入相应的字符。

    若要粘贴整块代码,而不出现代码缩进,跟粘贴源格式一致,现在正常模式下输入‘:set paste’,在进入插入模式,即可原格式粘贴,完成后保存即可。

  • 命令模式 (Command-mode):左下角显示:

    在正常模式中,按下:(英文冒号)键,会进入命令模式。在命令模式中可以执行一些输入并执行一些vim或插件提供的指令,就像在shell里一样。这些指令包括设置环境、文件操作、调用某个功能等等。

    常用的命令有:q(退出)、q!(强制退出)、w(保存)、wq(保存并退出)

  • 可视模式 (Visual-mode):左下角显示–VISUAL–

    在正常模式中按下v, V, <Ctrl>+v,可以进入可视模式。可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。

vim常用命令

  • 启动vim,在命令行窗口中输入以下命令即可

    1
    2
    3
    vim     // 直接启动vim

    vim filename // 打开vim并创建名为filename的文件
  • 退出vim命令

    1
    2
    3
    4
    5
    6
    7
    8
    :w      保存文件但不退出vi
    :w file 将修改另外保存到file中,不退出vi
    :w! 强制保存,不推出vi
    :wq 保存文件并退出vi
    :wq! 强制保存文件,并退出vi
    :q 不保存文件,退出vi
    :q! 不保存文件,强制退出vi
    :e! 放弃所有修改,从上次保存文件开始再编辑命令历史

    以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令

  • 撤销和重做

    1
    2
    3
    u       撤销(Undo)
    U 撤销对整行的操作
    Ctrl + r 重做(Redo),即撤销的撤销。
  • 删除命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    x   删除当前字符
    3x 删除当前光标开始向后三个字符
    X 删除当前字符的前一个字符。X=dh
    dl 删除当前字符, dl=x
    dh 删除前一个字符
    dd 删除当前行
    dj 删除上一行
    dk 删除下一行
    10d 删除当前行开始的10行。
    D 删除当前字符至行尾。D=d$
    d$ 删除当前字符之后的所有字符(本行)
    kdgg 删除当前行之前所有行(不包括当前行)
    jdG(jd shift + g) 删除当前行之后所有行(不包括当前行)
    :1,10d 删除1-10行
    :11,$d 删除11行及以后所有的行
    :1,$d 删除所有行
    J(shift + j)  删除两行之间的空行,实际上是合并两行。

移动光标位置

在正常模式下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
hjkl 左下上右    
shift+4($):末尾 g+_:末尾
shift+6(^):开头 0:开头

w:下一个单词(仅包含字母) W:下一个单词(包含特殊符号)
b:上一个单词 B:上一个单词
e:下一个单词末尾 E:下一个单词末尾

ctrl+f:上一页
ctrl+b:下一页
ctrl+d:上半页
ctrl+u:下半页
ctrl+e:下一行(光标不动,显示页面下移一行)
ctrl+y:上一行(光标不动,显示页面上移一行)

G:文末
gg:文头
nG:跳到第n行
H:跳到当前页的第1行
M:跳到当前页的中间那行

复制粘贴

1
2
3
4
dd:删除一行  
p:粘贴
yy:拷贝一行
ndd/nyy:删除/复制第n行

查找,替换

1
2
3
4
5
6
7
/pattern    前向查找    
?pattern 后向查找
n: next
shift+n: 反向的next
s/pattern1/pattern2: 替换
s/pattern1/pattern2/g: 替换当前行所有
1,$s/pattern1/pattern2/g: 替换从第一行开始所有

块操作

1
2
3
ctrl+v:开始选择要操作的块
I 然后 #插入多行注释
d:删除 s:删除后替换

分屏操作

1
2
3
4
//分屏后可直接采用:q命令退出当前窗口
split:上下分屏 vsplit:左右分屏
ctrl+w+hjkl:切换分屏到不同方向
e:打开文件

文件命令

  • 打开单个文件

    1
    vim file
  • 同时打开多个文件

    1
    vim file1 file2 file3 ...
  • 删除文件或删除目录

    1
    2
    rm file     删除文件
    rm -rf dir 删除目录
  • 在vim窗口中打开一个新文件

    1
    :open file
  • 在新窗口中打开文件

    1
    :split file
  • 切换到下一个文件

    1
    :bn
  • 切换到上一个文件

    1
    :bp
  • 查看当前打开的文件列表,当前正在编辑的文件会用[]括起来。

    1
    :args
  • 打开远程文件,比如ftp或者share folder

    1
    2
    3
    :e ftp://192.168.10.76/abc.txt

    :e \qadrive\test\1.txt

参考:

  1. VIM中的保存和退出、VIM退出命令、如何退出vim编辑、VIM命令大全
  2. 高效率编辑器 Vim——操作篇,非常适合 Vim 新手
  3. terminal快捷键以及vim快捷键