欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入我们的社群。

Vim基本使用

Linux 迷途小书童 5年前 (2019-12-04) 3695次浏览 2个评论

软硬件环境

  • ubuntu 18.04 64bit
  • vim

安装vim

ubuntu 系统安装完毕后,默认的 vi 功能是被阉割的,我们需要安装 vim

sudo apt install vim

视频看这里

3种工作模式

vi

使用 vi 编辑文件时,默认处于命令模式。这时可使用方向键(上、下、左、右键)或快捷键 kjhi 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。

输入模式下,vi 可以对文件执行写操作,类似于在 Windows 的文档中输入内容。

编辑模式用于对文件中的指定内容执行保存、查找或替换等操作。

基本操作

命令 描述
:set number 加行号
:w 保存文件
:wq 保存并退出
:q 退出vim
:q! 不保存退出
:x 保存退出
:sav 文件名 保存成文件名
:i 进入插入(编辑)状态
按Esc键 退出编辑状态

语法高亮

命令 描述
:syntax on 打开语法高亮
:syntax off 关闭语法高亮
:set syntax=perl 强制语法高亮

文件内移动

命令 描述
h 左移
l 右移
j 下移
k 上移
e 移到单词末尾
b 移到单词开头
0 (数字0)移到行首
^ 移动到行首
I (大写字母i)光标移到行首,并进入编辑状态
o (字母o)光标移到下一行行首,并进入编辑状态
O (大写字母o)光标移到上一行行首,并进入编辑状态
$ 光标移到行末尾
A 光标移到行末尾,并进入编辑状态
G 光标移到文件的最后一行的起始位置
gg 光标移到文件开头
L 光标移到当前屏幕的底部
:行数 移动光标到指定行数
列数l (列数+字母l)移动光标到指定列
{ 光标移动到上段
} 光标移动到下段
( 光标移动到上句
) 光标移动到下句

复制、剪切、粘贴

命令 描述
y 拷贝选中的文本
p (小写字母p)粘贴到光标后
P (大写字母p)粘贴到光标前
x 剪切当前字符
s 剪切当前字符并进入编辑状态
dd 剪切当前行
5dd 剪切自当前行起的5行内容
yy 复制当前行
5yy 复制自当前行起的5行内容
y$ 复制当前到文件尾的内容
D 剪切当前到文件尾的内容
dG 删除自光标起的所有行
u 回到修改前的状态
cw 删除光标所在的单词,如果光标在单词的中间,则删除自光标处到单词结尾,并进入编辑状态

查找

命令 描述
/字符串 从头开始查找字符串,按n跳到下一处,N跳到上一处
?字符串 从尾开始查找字符串
* 查找光标所在的单词
/\c字符串 查找字符串,不分大小写
/l[io]ve 查找love或者live
/\<字符串 查找以指定字符串开头的单词
/字符串> 查找以指定字符串结尾的单词
/\<字符串> 查找完全匹配字符串的单词

替换

命令 描述
r 光标移动到要替换的字符,按下r再输入另一字符进行替换
:%s/旧字符串/新字符串/g 将文件中的旧字符串替换成新字符串
:起始行,结束行s/旧/新/g 将起始行到结束行内的旧字符串替换成新字符串
:%s/*$//g 删除所有空格
:g/字符串/d 删除包含字符串的所有行
:%s/^/字符串/g 在每行开头插入字符串
:%s/$/字符串/g 在每行末尾插入字符串
:s/旧/新/ 在当前行把第一次出现的旧字符串替换成新字符串
:s/旧/新/g 在当前行把出现的旧字符串替换成新字符串

vim与linux命令结合使用

命令 描述
:!命令 执行命令
!!命令 执行命令并将输出添加到当前文件当前位置,会替换原来的内容
:r !命令 执行命令并将输出添加到当前文件当前位置的下一行
:sh 临时回到命令行,原来打开文件的进程在后台运行

文本缩进

命令 描述
:set autoindent 打开自动缩进
:set smartindent 打开智能缩进
:set shiftwidth=4 定义缩进大小为4个空格
>> 当前行缩进
5>> 自光标起5行整体进行缩进
<< 当前行不缩进(un-indent)
5<< 自光标起5行整体不缩进

读写文件

命令 描述
:起始行数,结束行数 w 输出文件名 将从起始行数到结束行数输出到指定文件名中,如果文件名已经存在,则w后要跟上!,且文件内容会被替换
:起始行数,结束行数 w >> 输出文件名 将从起始行数到结束行数输出到指定文件名的末尾
:r 文件名 将指定文件名的内容添加到当前文件中来
:行数r 文件名 将指定文件名的内容添加到当前文件的指定行处

大小写

命令 描述
Vu 将当前行中的大写字符转换成小写字符
VU 将当前行中的小写字符转换成大写字符
g~~ 将当前行的大小写互换
vEU 将单词转换成大写
ggguG 全文转换成小写
gggUG 全文转换成大写
:%s/\<./\u&/g 将每个单词的首字母转换成大写
:%s/\<./\l&/g 将每个单词的首字母转换成小写
:%s/.*/\u& 将每行的首字母转换成大写
:%s/.*/\l& 将每行的首字母转换成小写
gU0 (数字0)从光标所在位置到行首,都变为大写
gU$ 从光标所在位置到行尾,都变为大写
gUG 从光标所在位置到文章末尾都变为大写
gU1G 从光标所在位置到第一个字符,都变为大写
喜欢 (0)

您必须 登录 才能发表评论!

(2)个小伙伴在吐槽
  1. 真不错!!!
    匿名2022-01-03 09:56