Linux
学习—Vim
入门Author:qyan.li
Date:2022.2.22
Vim
简介Vim
是从vi
发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs
并列成为类Unix
系统用户最喜欢的文本编辑器。
简单而讲:Vim
是Unix及类Unix系统
中一种文本编辑器
Vim
文本编辑Vim
工作模式
Vim
中总共包含三种工作模式,分别为1. 命令模式 2. 文本输入模式 3. 末行模式
Vim可以在上述三种模式之间进行切换:
借助于
vi test.txt
命令,可以创建名为test.txt
的文件,并以Vim
的形式打开,此时进入vim
的命令模式,此时键入的所有代码均为命令在命令模式下,键入字母
i
可以进入文本编辑模式,此时用户可以在此界面任意输入文字或者代码进行文本编辑文本编辑完成后,按下
esc
键可以由文本编辑模式回退至命令模式小
Tips
:文本编辑模式无法直接转换至末行模式,必须以命令模式为中间的媒介
命令模式下输入
:
即可由命令模式转换为末行模式,在末行模式下,所有用户输入均视作末行命令
Vim
常用命令:
命令模式命令:
命令模式切换至文本输入模式:
i
:在光标前插入一个字符
a
:在光标后插入一个字符
o
:在下一行插入一个字符
shift + i
:在行首插入一个字符
shift + a
:在行末插入一个字符
shift + o
:在上一行插入一个字符
s
:删除一个字符并插入一个字符
shift + s
:删除一行内容并插入一个字符
命令模式下光标移动:
h
:向前移动
j
:向下移动
k
:向上移动
l
:向右移动
小Tips:
上述命令,个人感觉较为鸡肋,模式转换,大部分情况下仅需记忆
i:insert
即可,其余可作为了解。光标移动,经过自己电脑测试,完全可以有小键盘上的上下左右键代替
命令模式下光标跳转:
number + G
可以跳转至指定number
行gg
可以跳转至文件首部G
可以跳转至文件尾部0
可以将光标移至行首$
可以将光标移至行尾命令模式下内容删除:
x
删除光标选中的字符,但不改变工作模式s
删除光标选中的字符,并切换至文本编辑模dw
一次性删除整个单词(光标放置在单词的首字母上进行操作)shift + d
或者d$
完成删除一段内容,从选中字母开始,删除后面所有内容d0
从选中字母开始,删除前面的所有内容dd
删除整行内容number + dd
删除多行内容,删除从本行开始的number
行的内容v + d
删除选中的内容,光标放置在首字母上,按下v
先后移动选中待删除的文本,然后通过d
删除r
替换单个字符,按下r
后,输入想要替换的单词命令模式下复制粘贴:
yy
实现整行内容的复制
dd
实现整行内容的剪切
小Tips:
严格的讲,
Vim
中本质上并不存在删除功能,所有删除功能的实现,本质上都是借助于剪切完成的
p
将复制或者剪切的内容粘贴在光标的下一行
shift + p
将复制或者剪切的内容粘贴在光标所在行
number + yy
进行从本行开始number
行的复制
v + yy
可以针对于特定的内容进行选中,而后复制
命令模式下内容查找:
命令模式下的内容查找一般分为两种情况:
Vim
文本编辑器根据上述两种情况,提供两种内容查找的方式:
命令模式下输入/
,编辑器由命令模式进入末行模式,其后输入待查询的目标单词,按下回车键,光标定位在查询到的第一个内容的位置
小
Tips
:回车键按下后,可以借助于
n
定位下一个查询到的单词,借助于shift + n
可以定位至上一个查询到的单词命令示例:
/<待查询单词> + enter + <n向下查询><N向上查询>
命令模式下,将光标定位在任意单词位置上,按下*
可以向后在文章中查找目标单词,按下#
可以向前在文章中查找目标单词
命令模式下撤销:
u
在命令模式下实现撤销操作,回退至操作前的形式crtl + r
命令模式下实现反撤销操作命令模式下分屏:
crtl + alt + t
实现终端的快捷键打开crtl + shift + t
实现在Vim
中开启两个标签窗口末行模式命令:
末行模式保存、退出:
w
保存
q
退出
二者可以结合使用,
wq
实现保存并退出操作
末行模式分屏:
末行模式下输入sp
,并回车实现横分屏
末行模式下输入vsp
,并会车实现竖分屏
小
Tips
:
- 分屏操作后,可以借助于
crtl + ww
实现光标在不同屏幕上的切换- 借助于
q
退出当前窗口,也可以借助于qall
退出vi
,直接进入bash
终端,同时可以wqall
先保存,后退出
末行模式替换:
单行替换方法:
将光标放置在待替换行上,键入命令s /原数据/替换数据
,enter
键实现命令生效
通篇替换方法:
键入命令%s /原数据/替换数据
区域替换方法:
区域替换的方法即在s
前面添加区域限定,如行号,键入命令11,22s /原数据/新数据
小
Tips
:上述的所有替换命令均只对每行检测到的第一个单词生效,单行后续再出现目标词汇,不会进行替换,如果想将所有符合要求的词汇进行替换,需要在命令结尾添加
/g
标记
末行模式命令呼出:
crtl + p
呼出上一条命令crtl + n
呼出下一条命令Vim
程序编译:借助于Vim
代码编写完成后,bash
终端输入g++ hello.cpp -o a.out
即可以实现c++
文件的编译,当前目录增加a.out
文件,直接执行此文件实现程序执行./a.out
小
Tips
:
- test
.c
文件编译类似,将g++
换为gcc
即可- 上述命令在
bash
终端中完成,同样可以在命令前添加!
实现在Vim
编辑器中执行