Vim 学习
前置知识
在 Vim 中大小写是一个相反的操作
在 Vim 中有 4 种编辑模式,分别是:普通模式、插入模式、可视模式和命令行模式。

复制粘贴相关 ⭐
首先删除一行:dd
5dd:删除当前行在内以下的5行。
撤回 u
Ctrl+r 恢复上一步被撤销的操作
当我们在普通模式中按 v 的时候,会把当前光标为主作为选区的起点,然后我们可以通过 h/j/k/l/w/b 等进行光标的移动,确定选区的终点。
在选择了要操作的范围之后我们就可以使用 d 命令来进行删除。使用 d 命令进行操作的时候实际上进行的是我们熟悉的「剪切」操作,我们可以通过另外的一个命令 p 在普通模式下进行粘贴操作。
与 d 命令类似的还有复制命令 y,我们可以通过 yy 来复制一行内容。同样的,也可以进入可视模式之后选定指定的内容进行复制,然后回到普通模式进行 p 粘贴操作。
按 x 是删除
粘贴二:先按下 insert 进入编辑模式,然后按 shift+insert 粘贴内容。
粘贴系统剪贴板
确认 vim 编辑器是否支持 clipboard 特性
vim --version| grep "clipboard"
支持这特性的检索结果应该包含 +clipboard,而不支持则会是 -clipboard
不支持的话就重新安装吧
sudo apt install vim-gtk
然后只需要将内容复制到剪切板寄存器(+)中即可,注意要加上 "+ ,其他程序便可以访问到了。
"+yy // 复制当前行到剪切板
"+p // 将剪切板内容粘贴到光标后面
"ayy // 复制当前行到寄存器 a
"ap // 将寄存器 a 中的内容粘贴到光标后面
全选删除
- 全部删除:按 esc 键后,先按 gg(到达顶部),然后 dG(删除到尾部)
- 全部复制:按 esc 键后,先按 gg,然后 ggyG
- 全选高亮显示:按 esc 键后,先按 gg,然后 ggvG 或者 ggVG
- 单行复制:按 esc 键后,然后 yy
- 单行删除:按 esc 键后,然后 dd
- 粘贴:按 esc 键后,然后 p
粘贴时保持格式
在命令模式中使用 :set paste 后就可以粘贴了,然后退出 粘贴模式 命令模式输入 :set nopaste
范围操作
d<范围>- 删除一定范围内的文本c<范围>- 删除一定范围内的文本并进入插入模式y<范围>- 将范围内的文本放入0号和"号注册栏v<范围>- 选择范围内的文本><范围>- 将范围中的内容缩进一格<<范围>- 将范围中的内容取消缩进一格
一般这些操作搭配可视化模式一起使用
# 注意是大小写
v - 进入字符选择模式, V - 进入行选择模式, Ctrl+v - 进入块选择模式。
进入可视化模式后移动光标即可选中文本。过程中可按 o 键令光标在选区两端切换。
下面这些好像不行,待学习
=<范围>- 自动缩进范围内的文本gU<范围>- 将范围内的字符转换为大写gu<范围>- 将范围内的字符转换为小写
批量修改内容
Vim 下多行同时编辑与删除技巧
问题:在Vim内同时对多行增加或删除相同的内容,如:
item 1
item 2
item 3
变成(增加):
my_item 1
my_item 2
my_item 3
再变成(删除):
tem 1
tem 2
tem 3
编辑操作:
- 将光标移到要插入相同内容的第一行第一个字符上,如上面代码中 item 1 中的 i 上
- 按下 ctrl+v 进入 visual block 模式
- 按两次 j 或者 2j,将光标移动到要插入的最后一样,如上面代码中 item 3 中的 i 上
- 按下 I(大写 i)进入编辑模式
- 开始输入要插入的内容,如 my_ (虽然这里只修改了一行,但是按 esc 之后就会自动把其它几行也同样操作)
- 按 esc 退出(非常重要,不要忘记了),Vim 会自动在这几行前面添加相同的内容,可能需要一些运行时间。

删除操作:
- 将光标移到要删除相同内容的第一行第一个字符上,如代码中 my_item 1 中的 m 上
- 按下 ctrl+v 进入 visual block 模式
- 使用 motion 选中想要删除的所有内容,在本问题中,按两次 j 和两次 l
- 按下 d,同时删除所有选中的字符

光标移动
0 到行头
^ 到本行最后一个非blank字符的位置
$ 到本行行尾
/字符串 搜索/后面的字符串(如果有多个则回车后按n则转到下一个)
ctrl+f 向下移动一页
ctrl+b 向上移动一页
+ 移动到下一行(注意+是要按shift按出来的,不然是=)
- 移动到上一行
n<space> n表示移动的字符,输入数字后按空格会向右移动n个字符
G 移动到最后一行
gg 移动到第一行
nG 移动到第n行
n 向下移动n行
| 移动光标的方法 | 效果 |
|---|---|
| h 或 向左方向键(←) | 光标向左移动一个字符 |
| j 或 向下方向键(↓) | 光标向下移动一个字符 |
| k 或 向上方向键(↑) | 光标向上移动一个字符 |
| l 或 向右方向键(→) | 光标向右移动一个字符 |
常用的范围指令有:
shift + []是以代码块为单位跳转h/j/k/l:分别代表着向左,下,上,右的方向移动^/$:跳到行首/行尾w/b:跳到下一个单词头/跳到上一个单词头f{char}/F{char}:跳到下一个字符为 char 的位置/跳到上一个字符为 char 的位置gg- 从光标位置到文件开头G- 从光标位置到文件结尾/正则表达式 - 从光标位置到下一个匹配正则表达式的位置(跨行)?正则表达式 - 从光标位置到上一个匹配正则表达式的位置(跨行)
命令模式
以下操作要先输入:
打开&保存&退出&改变文件
e 文件路径 打开一个文件 例如 e ./test.java
w 存盘
saveas 文件路径(注意还要加上文件名) 另存为 例如:saveas ./temp/test.java
wq 保存退出
q! 退出不保存 注意强行退出后会产生一个 .filename.swp 文件,如果原文件没有丢失则直接删除这个文件才能正常打开
rm .filename.swp
bn 切换下一个文件
bp 切换上一个文件
:set nu 显示行号
配置环境
安装中文文档
wget http://nchc.dl.sourceforge.net/sourceforge/vimcdoc/vimcdoc-2.3.0.tar.gz
tar -zxvf vimcdoc-2.3.0.tar.gz
cd vimcdoc-2.3.0/
## 它会自动安装
./vimcdoc.sh -i

修改光标
使用以下命令同时启用光标行和光标列,将显示“十字架”光标,可以准确定位当前位置:
:set cursorline cursorcolumn

修改配置文件
vim ~/.vimrc
在文件里就可以添加命令了
$ vim ~/.vimrc
"这个文件的双引号 (") 是注解
set hlsearch "高亮度反白
set backspace=2 "可随时用倒退键删除
set autoindent "自动缩排
set ruler "可显示最后一列的状态
set showmode "左下角那一列的状态
set nu "可以在每一列的最前面显示行号啦!
set bg=dark "显示不同的底色色调
syntax on "进行语法检验,颜色显示。