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 "进行语法检验,颜色显示。