vim学习笔记

一、声明

本文为vim学习笔记,内容来自多个博客。主要为此博客

二、简述

vim是一个很好用的编辑器。我接触vim是刚工作时,同事教给使用的,主要用来编辑服务器上的文件。当时只是最简单的插入、编辑、保存,其它都要配合鼠标来操作。后来慢慢的发现vim支持的功能很多,也开始慢慢的学习与使用。现在不光在服务器上,我的个人电脑的编辑器,代码编辑器都装上了vim插件,极大的改变了工作效率。 写这边文章是因为在使用vim的过程中发现有一些操作还是需要配合鼠标,所以决定简单的学习vim的常用操作,尽量摆脱鼠标。这篇文章是我简单的看了man vim,vim -h,以及文末列出的文章以后,做的一个学习笔记。若有人转发,请保持文章中的原文地址。

三、vim是什么?

vim是一个文档编辑器。

四、vim官网

https://www.vim.org/

五、vim官方文档

https://www.vim.org/docs.php

六、vim安装

centos
yum install vim -y

七、vim的选项概要

vim [options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]

八、Vim的模式

正常模式:可以使用快捷键命令,或按:输入命令行。
编辑模式:可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。
可视模式:正常模式下按v可以进入可视模式, 在可视模式下,移动光标可以选择文本。按V进入可视行模式, 总是整行整行的选中。ctrl+v进入可视块模式。
替换模式:正常模式下,按R进入。

九、获取帮助

1. 方式一

man vim

2. 方式二

vim -h

3. 方式三

在vim运行中,输入:help可以获得帮助页面。
帮助界面中
:q退出帮助界面
:q!退出vim
CTRL + ] 选择帮助文本主题
CTRL + T或CTRL + O 返回上一级主题

十、文件操作

vim -c cmd file:打开文件之前,先执行指定的命令。
vim -x file:设置密码,设置密码后,再次打开需要输入密码
vim -d file file:以diff模式启动,应该有两个,三个或者四个文件名参数。
vim -r file.swp: 恢复上次异常退出的文件。file.swp为交换文件。
vim -R file: 以只读的方式打开文件,但可以强制保存。
vim -M file: 以只读的方式打开文件,不可以强制保存。
vim -y file: 简易模式
vim + num file: 对于第一个文件,光标位于num行。如果缺少num,则光标将位于最后一行。
vim + /string file: 对于第一个文件,光标位于第一个string的位置。

十一、文档操作

:w 保存
:w! 如果文件为只读状态,可以强制写入硬盘,是否写入成功,与你所拥有的文件权限有关
:q 退出vim
:q! 即使文件未保存,仍强行离开 vim :wq 文件写入硬盘后(即保存)离开 vim (常用)
ZZ 大写字母 Z,如果文件没有修改,则直接离开;如果文件被修改,则保存后离开
:w [filename] 将当前文件另存为另一个文件,这个新文件的保存路径为当前路径
:r [filename] 在当前文件中读入另一个文件的数据,插入到当前游标所在列的后面
:n1,n2 w [filename] 将第 n1 行到第 n2 行的数据储存为新的文件
:! command 暂时离开 vi 到指令列模式下执行 command 的显示结果

十二、光标移动

h 或向左方向键 游标向左移动一个字元
j 或向下方向键 游标向下移动一个字元
k 或向上方向键 游标向上移动一个字元
l 或向右方向键 游标向右移动一个字元
[ctrl]+[f] 屏幕向下移动一页,相当于[Page Down](常用)
[ctrl]+[b] 屏幕向上移动一页,相当于[Page Up](常用)
[ctrl]+[d] 屏幕向下移动半页
[ctrl]+[u] 屏幕向上移动半页
n+[Space] n 表示数字,按下数字后再按空格键,游标会向右移动到这一行的第 n 个字元。
功能键[Home]或 0 游标移动到这一行的第一个字元处
功能键[End]或 $ 游标移动到这一行的最后一个字元处 (常用)
H 游标移动到这个屏幕最上方那一行的第一个字元
M 游标移动到这个屏幕中央那一行的第一个字元
L 游标移动到这个屏幕最下方那一行的第一个字元
G 游标移动到这个档案的最后一行 (常用)
nG n 为数字。游标移动到这个档案的第 n 行
gg 游标移动到这个档案的第一行 (常用)
n+[Enter] n 为数字。游标向下移动 n 行 (常用)

十三、搜索与替换

/word 在当前游标所在位置往下寻找关键字为 word 的字符串 (常用)
?word 在当前游标所在位置往上寻找关键字为 word 的字符串
n 这里的 n 是按键 n。代表重复前一个搜索动作
N 这里的 N 是按键 N。功能与 n 相反,代表反向执行前一个搜索动作
:n1,n2s/word1/word2/g n1 与 n2 都为数字,表示行数。可在第 n1 行与第 n2 行之间寻找 word1 字符串,并替换为 word2 (常用)
:1,$s/word1/word2/g 表示从第一行到最后一行,将 word1 字符串替换为 word2 (常用)
:1,$s/word1/word2/gc 表示从第一行到最后一行,也是将 word1 字符串替换为 word2,不同之处是在替换前显示提示字元,由用户确认是否最终替换 (常用)

十四、删除、复制、粘贴

[Del] 或 x 向后删除一个字元 (常用)
X 向前删除一个字元 (常用)
nx n 为数字,表示连续向后删除 n 个字元
dd 删除游标所在的那一行 (常用)
ndd n 为数字,删除游标所在的那一行往下数 的 n 个行 (常用)
d1G 删除游标所在的那行到第一行的所有数据
dG 删除游标所在的那行到最后一行的所有数据
d$ 删除游标所在处到该行的最后一个字元
d0 是数字 0,删除游标所在处到该行的第一个字元
yy 复制游标所在的那一行 (常用)
nyy n 为数字, 复制游标所在的那一行往下数 n 行 (常用)
y1G 复制游标所在行到第一行的所有数据
yG 复制游标所在行到最后一行的所有数据
y0 复制游标所在的字元到该行行首的所有数据
y$ 复制游标所在的字元到该行行尾的所有数据
p 将已复制的数据粘贴在游标所在的那一行的下一行 (常用)
P 将已复制的数据粘贴在游标所在的那一行的上一行,原来游标所在的那一行会被推后一行 (常用)
J 将游标所在的行与下一行的数据合并为一行
u 撤销前一个操作 (常用)
[ctrl]+r 重做上一个被撤销的操作 (常用)
. 这是小数点,表示重复前一个操作 (常用)

十五、模式切换

i 进入插入模式;从目前游标所在处插入
I 进入插入模式;从目前游标所在行的第一个非空白字元处插入 (常用)
a 进入插入模式;从目前游标所在处的下一个字元开始插入
A 进入插入模式;从目前游标所在行的最后一个字元开始插入 (常用)
o 是字母,表示进入插入模式;从目前游标所在行的下一行处插入新的一行
O 是字母,表示进入插入模式;从目前游标所在行的上一行处插入新的一行 (常用)
r 进入取代模式;只会取代游标所在的那个字元一次
R 进入取代模式;会一直取代游标所在的文字,直到按下 [Esc] 为止 (常用)
[Esc] 从编辑模式返回到一般指令模式 (常用)

十六、区域选择

v 字符选择,移动游标,游标经过的地方会反白选择
V 行选择,移动游标,游标经过的行会反白选择
[Ctrl]+v 区块选择,移动游标以长方形方块的方式反白选择
y 复制反白选择的地方
d 删除反白选择的地方
p 将之前复制的区块,粘贴在游标所在处

十七、vim设置

:set nu 设定行号
:set nonu 取消行号
:set hlsearch 搜索到的关键字反白显示 (默认)
:set nohlsearch 搜索到的关键字取消反白显示
:set autoindent 自动缩排 (默认)
:set noautoindent 不自动缩排
:set backup 自动存储备份档(备份档名为 filename~)
:set ruler 显示右下角状态说明
:set showmode 显示左下角状态说明(比如 INSERT)
:set backspace=(012) 倒退键设置;2:可以删除任意值;0 或者 1,仅可删除刚刚输入的字符,无法删除原来就存在的字符
:set all 显示所有环境参数设定值
:set 显示与系统默认值不同的设定值
:syntax on 开启语法着色
:syntax off 关闭语法着色
:set bg=dark 开启语法着色深色方案
:set bg=light 开启语法着色浅色方案 (默认)

十八、常用操作

1. 多行插入注释

注释:ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如”#”,再按Esc,就会全部注释了。

2. 批量删除行首的内容

删除:先按v,进入visual模式,横向选中列的个数(如”#”注释符号,需要选中两列),再按Esc,再按ctrl+v 进入列编辑模式,向下或向上移动光标,选中注释部分,然后按d, 就会删除注释符号(#)。

3. 撤销

u

4. 恢复撤销的动作

ctrl+r

十九、参考文章

https://www.runoob.com/w3cnote/all-vim-cheatsheat.html
https://www.cnblogs.com/newBlash/p/4351798.html
https://blog.csdn.net/deniro_li/article/details/53945274

Previous Post

缓存知识体系

Next Post

ansible学习笔记

Related Posts