Vim 文本编辑器的使用:Vim安装、常用命令、快捷键

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xietansheng/article/details/85041723

本文链接: https://blog.csdn.net/xietansheng/article/details/85041723

1. 安装 Vim

Vim 是一个在 Vi 基础上改进,并增加了许多特性,功能更强大,跨平台的终端文本编辑器。Vim 和其他 PC 文本编辑器一样,支持文件打开/保存、复制、粘贴、删除、查找、替换等操作。

Linux 系统下安装 Vim:

# Debian 系列: Debian、Ubuntu 等
sudo apt-get install vim

# RedHat 系列: Redhat、CentOS、Fedora 等
sudo yum install vim

MAC 系统一般默认已安装,其他平台可以去官网下载安装:

安装完成后,启动 vim:

# 打开一个空白文档, 保存时需要指定保存位置
vim

# 打开指定文件
vim <file>

# 左右分屏打开多个文件, n 表示分屏的数量
vim -on file1 file2 ...

# 上下分屏打开多个文件, n 表示分屏的数量
vim -On file1 file2 ...

2. Vim 的工作模式

Vim 常见的其中 4 种工作模式:

  • 正常模式(Normal)
  • 插入模式(Insert)
  • 命令模式(Command)
  • 可视模式(Visual)

模式之间的切换:

vim-model.png

PS: 输如各种命令和快捷键操作, 需要将本地输入法切换为 英文状态

2.1 正常模式(Normal)

启动 vim 后,默认处于 正常模式。处在其他模式时,按下 ESC键 返回到 正常模式(有些模式下需要按两次 ESC键 才能返回 正常模式)。正常模式 一般用于 浏览文件,也可以用于复制、粘贴、删除等操作。

正常模式下浏览文件,有许多操作的快捷键。

(1) 光标(内容浏览)

h, j, k, l      // 移动光标: 左、下、上、右(方向键也可以移动光标)

w               // 光标 向前移动一个 words
b               // 光标 向后移动一个 words

{               // 光标 向前移动一个 段落
}               // 光标 向后移动一个 段落

M               // 移动光标到 当前屏幕显示的 中间行 行首
L               // 移动光标到 当前屏幕显示的 最后一行 行首

Ctrl+u/d        // 向 上/下 翻半屏
Ctrl+b/f        // 向 上/下 翻一屏

gg              // 移动光标到第一行行首(文件开头)
<Num>G          // 移动光标到指定的行(先按数字, 再按大写G), 
                // 不输入数字, 直接按 G 表示光标移动到 最后一行 行首

(2) 分屏操作

Ctrl+w s        // 上下分屏 打开当前窗口的文件
Ctrl+w v        // 左右分屏 打开当前窗口的文件

Ctrl+w c        // 关闭当前窗口, 如果当前是最后一个窗口, 不能关闭
Ctrl+w q        // 关闭当前窗口, 如果当前是最后一个窗口, 关闭后退出

Ctrl+w+w        // 分屏窗口切换(按下Ctrl后不释放, 再连续按两次w)
Ctrl+w h/j/k/l  // 分屏窗口切换(移动光标), 按下Ctrl+w释放后, 再按 h左、j下、k上、l右
Ctrl+w 方向键    // 分屏窗口切换(移动光标), 按下Ctrl+w释放后, 再按上下左右方向键移动窗口

Ctrl+w H/J/K/L  // 分屏窗口移动, 按下Ctrl+w释放后, 再按 H左、J下、K上、L右

Ctrl+w +        // 窗口加高, 窗口底边 往下移动(如果是做下边窗口, 则窗口顶边 往上移动)
Ctrl+w -        // 窗口减高, 窗口高度 往上移动(如果是做下边窗口, 则窗口顶边 往下移动)

Ctrl+w >        // 窗口加宽, 窗口右边 往右移动(如果是最右边窗口, 则窗口左边 往左移动)
Ctrl+w <        // 窗口减宽, 窗口右边 往左移动(如果是最右边窗口, 则窗口左边 往右移动)

Ctrl+w =        // 窗口等宽等高

Ctrl+w n >      // 窗口加宽 n 个单位, n 为整数
Ctrl+w n <      // 窗口减宽 n 个单位, n 为整数

(3) 复制 / 粘贴

// 复制 一般要和 可视模式 一起使用

y               // 复制(可视模式下执行, 复制可视模式下选中的区块)
d               // 剪切(可视模式下执行, 剪切可视模式下选中的区块)
p               // 粘贴(在光标处粘贴剪贴板的内容)

yy              // 复制光标所在的当前行

(4) 查找 / 替换

/<keywork>      // 查找内容, 例如: /abc<Enter> 查找 "abc" 字符串(支持正则表达式)
/<keywork>\c    // 忽略大小写查找内容
/<keywork>\C    // 区分大小写查找内容
N               // 查找内容匹配的 上一个
n               // 查找内容匹配的 下一个

r<char>         // 替换当前光标处的字符(输入r, 再输如一个用于替换的新字符)
R               // 进入“替换模式”, 接着输入字符替换掉当前光标处的字符, 并且光标往后移动一个字符

// 全局替换 在 命令模式 中(看后面的 命令模式 介绍)

(5) 移动 / 删除

<<              // 光标所在行左移
>>              // 光标所在行右移

x               // 删除光标后的一个字符, 相当于 Delete
X               // 删除光标前的一个字符, 相当于 Backspace

dd              // 删除光标所在行
<Num>dd         // 从光标所在行开始删除 Num 行(先按数字, 再按dd)

D               // 删除光标所在行 的 光标后 的 所有内容(包括光标所在字符)
d0              // 删除光标所在行 的 光标前 的 所有内容(不包括光标所在字符)
dw              // 删除光标开始位置的一个 words

(6) 重复 / 撤销

.               // 重复上一次操作的命令

u               // 撤销 
Ctrl+r          // 反撤销

2.2 可视模式(Visual)

可视模式通常用于批量选中文本区块,然后批量操作(复制、剪贴)。

正常模式可视模式 下,按下:

  • v键,进入 可视模式,左下角显示 “– VISUAL –
// 进入 可视模式 模式后

方向上/下键      // 从光标所在位置开始, 向 上/下 (反)选中 一行
方向左/右键      // 在光标所在行内, 向 左/右 (反)选中 一个字符
  • V键,进入 可视行模式,左下角显示 “– VISUAL LINE –
// 进入 可视行模式 模式后

方向上/下键      // 从光标所在位置开始, 向 上/下 (反)选中 一行
  • Ctrl+v键,进入 可视块模式,左下角显示 “– VISUAL BLOCK –
// 进入 可视块模式 模式后

方向上/下键      // 从光标所在位置开始, 向 上/下 (反)选中 一行(多选, 每行内的选中位置和其他行一致)
方向左/右键      // 在所选的 所有行内, 向 左/右 (反)选中 所有行内的一个字符

2.3 插入模式(Insert)

正常模式 下,通常按下 i键 进入到 插入模式,即可开始编辑文档。

处于 插入模式 时,左下角显示 “– INSERT –”。

正常模式进入到插入模式的快捷键对应的进入后光标的位置:

i           // 正常进入插入模式
I           // 移动光标到 行首

a           // 移动光标到 下一个字符
A           // 移动光标到 行尾

o           // 向下 新开一行, 并移动光标到 新行首
O           // 向上 新开一行, 并移动光标到 新行首

2.4 命令模式(Command)

正常模式 下,按下 :键 进入到 命令模式,等待输如命令,输入命令后按 Enter键 执行命令。

命令模式 下的常用命令:

:help [keywork]     // 查看帮助信息, 也可以直接按 F1键 查看帮助信息
:help <KEY>         // 查看指定快捷键的含义, 例如: ":help i"

:q                  // 退出
:q!                 // 强制退出(不保存)
:qa                 // 退出所有窗口
:qa!                // 强制退出所有窗口(不保存)
:w                  // 保存
:wq                 // 保存并退出

:w <newfile>        // 保存, 如果 vim 没有指定打开的文件, 需要输入保存的文件名
:wq <newfile>       // 保存并退出, 如果 vim 没有指定打开的文件, 需要输入保存的文件名
:wq! <newfile>      // 强制退出,并另存当前内容到指定文件

:o <file>           // 在当前窗口 打开指定文件
:sp <file>          // 上下分屏   打开指定文件
:vsp <file>         // 左右分屏   打开指定文件

命令模式 下的 全局替换 命令,:s(substitute)命令:

命令格式:
    :<作用范围>s/<旧字符串>/<新字符串>/<替换标志>

作用范围:
    s       // 当前行
    %s      // 全文
    '<,'>s  // 可视模式下选中的区域, 可是模式下输入:将自动补齐:'<,'>
    2,5s    // 第 2 ~ 5 行(共 4 行)
    .,+2s   // 当前行 和 下面 2 行(共 3 行), 点表示当前行

替换标志:
    g       // 全局替换(整个作用范围内, 不包括作用范围外)
    i       // 忽略大小写
    I       // 区分大小写(默认)
    c       // 替换时需要确认: replace with xxx (y/n/a/q/l/^E/^Y)
            //               y 替换,  n 不替换,  a 替换所有,
            //               q 退出查找模式,  l 替换当前位置并退出

命令实例:
    :s/abc/123/g        // 当前行的所有 "abc" 替换为 "123"
    :%s/abc/123/g       // 把全文所有的 "abc" 替换为 "123"
    :%s/abc/123/gi      // 把全文所有的 "abc" 替换为 "123", 并且不区分大小写
    :'<,'>s/abc/123/g   // 把可视模式下选中的文本中的 所有 "abc" 替换为 "123"
    :.,+2s/abc/123/g    // 把当前行和下面2行的所有 "abc" 替换为 "123"
    :2,5s/abc/123/g     // 把第 2 ~ 5 行的所有 "abc" 替换为 "123"

猜你喜欢

转载自blog.csdn.net/xietansheng/article/details/85041723