vim基本使用

时间:2024-03-11 14:39:15

目录

  • Linux编译安装vim
    • 自动安装
    • 手动安装
  • 配置
    • vim配置
  • 移动光标
    • 1.方向键
    • 2.行内跳转
    • 3.单词跳转
    • 4.句子跳转
    • 5.段落跳转
    • 6.光标移动命令修饰
    • 7.窗口内跳转
    • 8.翻页
    • 9.文件中跳转
    • 10.直接跳转到行号
  • 进行编辑
  • 基本操作
    • 常用操作
    • 交换文件
    • 命令模式
  • 杂项
  • 编辑器用户接口组成
    • 1.缓冲区
      • 1.1.查看现有的缓冲区列表
      • 1.2.在缓冲区之间跳转
      • 1.3.删除缓冲区
      • 1.4.bufdo命令
    • 2.窗口
      • 2.1.创建窗口
      • 2.2.光标在窗口间移动
      • 2.3.关闭窗口
      • 2.4.窗口移动
      • 2.5.交换窗口内容
      • 2.6.改变窗口的大小
    • 3.标签页
      • 3.1.新建标签页
      • 3.2.在标签页之间跳转
      • 3.3.关闭标签页
      • 3.4.移动标签页
    • 4.折叠效果
    • 5.文本对象
      • 5.1.常用文本对象
      • 7.快速恢复列表(quickfix)
      • 8.位置列表
      • 9.参数列表
  • 文件树的浏览
    • 1.内置Netrw文件管理器
    • 2.启用了wildmenu的e命令
  • 模式详解
    • 1.正常模式
    • 2.插入模式
    • 3.命令行模式
      • 3.2.快捷键
    • 4.可视模式
    • 5.替换模式
    • 6.虚拟替换模式
    • 7.终端模式
    • 8.ex模式
    • 9.选择模式
  • 命令的重映射
    • 重映射的表示方法
    • 模式感知
  • 先导键(leader key)

Linux编译安装vim

自动安装

sudo apt install vim

手动安装

git clone https://github.com/vim/vim.git
cd vim/src
#--with-features=huge 开启大部分功能,不涉及语言绑定
#搜索 install vim <version> with+<feature> on<operating system>
./configure --with-features=huge --enable-python3interp
make
sudo make install

#编译不通过,安装依赖
sudo apt install make build-essential libncurses5-dev libncursesw5-dev --fix-missing 

配置

vim配置

需要安装make, git工具.

git clone https://gitee.com/fedorayang/vim_make_config.git
cd vim_make_config
make all

移动光标

1.方向键

命令 说明 注释
h 根据按键位置
j 根据按键位置
k 根据按键位置
l 根据按键位置

2.行内跳转

命令 说明 注释
0 光标置于行首 缩进行首
_ 光标置于行首 字符行首
^ 光标置于行首 字符行首
$ 光标置于行尾

3.单词跳转

命令 说明 注释
w/W 下一个单词开头,大写广义单词 word
b/B 上一个单词开头 before
e/E 下一个单词结尾 end
ge 上一个单词结尾

4.句子跳转

命令 说明 注释
( 句子开头
) 句子结尾

5.段落跳转

命令 说明 注释
{ 段落开头
} 段落结尾

6.光标移动命令修饰

方式 说明 注释
数字+命令 命令执行的次数 5j 光标向下移动5行

7.窗口内跳转

命令 说明 注释
H 当前窗口顶部 Header
M 当前窗口中间 Middle
L 当前窗口底部 Low

8.翻页

命令 说明 注释
ctrl +f 下一页 forward
ctrl+b 上一页 back

9.文件中跳转

命令 说明 注释
gg 文件开头
G 文件结束

10.直接跳转到行号

命令 说明 注释
:N 跳转到指定行N
vim filename +N 打开文件时, 跳转到指定行
:+N 向下移动N行
:-N 向上移动N行

进行编辑

命令 说明 注释
a 进入插入模式, 插入点在光标后面 attach
A 进入插入模式, 在行尾
i 进入插入模式, 插入点在当前光标 insert
I 进入插入模式,在行首(缩进之后)
o 进入插入模式,在光标下面新增一行,在新行内插入 open a line below
O 进入插入模式,在光标上面新增一行,在新行内插入
gi 最后退出的位置进入插入模式 非常有用
c 修改命令,后面加移动光标命令 change
C 修改命令,删除直到行尾,然后进入插入模式
cc
S
清除整行,然后进入插入模式,保持当前的缩进水平,这在编程时很有用 change change
s (数字+)删除字符,进入插入模式
d 删除,后面加移动光标命令 delete
dd 删除整行 delete delete
u 撤销最后一次操作 undo
ctrl+r 重做 repeat
ESC 退出插入模式
y 1.复制后面接移动命令或者文本对象
2.在可视模式下,选择一些文本
yank
yy 复制当前行
p 粘贴到指定位置
数字+p,多次粘贴
删除和修改命令也进行了复制
paste
ctrl+o 执行正常模式下的命令,然后再回到插入模式
. 重复之前的修改

基本操作

常用操作

命令 说明 注释
vim ex_eval.c 打开文件
:e ex_cmds.c 加载文件E edit
:w 保存内容
也可以跟一个文件名保存到新文件中
write

交换文件

命令 说明 注释
r 从交换文件恢复 recover
d 删除交换文件 delete

命令模式

命令 说明 注释
:colorscheme+空格+tab 切换配色方案 在配色方案间切换

杂项

命令 说明 注释
vim --version 列出支持哪些功能,+支持,-未开启
:help feature-list 查看所有功能列表
:help 命令 单独help
单独h
help +命令
:h 命令 ctrl+d 得到多个相关命令
ctrl+] help中打开链接

编辑器用户接口组成

1.缓冲区

缓冲区是文件的内部表示

1.1.查看现有的缓冲区列表

:ls
:buffers
:files

 1 %a   "animal_farm.py"               line 1
#1: 缓冲区编号
#%a: 该缓冲区位于当前窗口中
#"animal_farm.py": 文件名
#line 1: 当前光标位置

1.2.在缓冲区之间跳转

#branch
:b 缓冲区编号 或者 文件名的一部分

#多个相同部分文件名跳转
:b+部分文件名+tab循环切换

#循环遍历
:bn #next
:bp: #previous

1.3.删除缓冲区

#buffer delete
:bd 
:bdelete
#如果没保存会提示错误

1.4.bufdo命令

2.窗口

一个屏幕可以显示几个窗口

2.1.创建窗口

#水平分割窗口
:split animals/cat.py
#简化命令
:sp

#垂直分割窗口
:vsplit animal.py
#简化命令
:vs

2.2.光标在窗口间移动

#使用方向键
ctrl+w 然后hjkl

#配置后
ctrl+hjkl

2.3.关闭窗口

#1.关闭当前窗口
ctrl+w,q

#2.关闭窗口并卸载缓冲区
:q #只要一个窗口退出vim
:bd

#3.关闭所有其他窗口
ctrl+w,o
ctrl+w,on
ctrl+w,only

#关闭所有窗口并退出
:qa
:wqa

2.4.窗口移动

:help window-moving

#
ctrl+w 然后HJKL

2.5.交换窗口内容

#当前行(列)窗口向右(下)移动,行优先级高于列
ctrl+w,r
#相反方向
ctrl+w,R

#当前窗口和下一个窗口交换,光标在当前窗口
#如果是最后一个窗口就和前一个窗口交换
ctrl+w.x

2.6.改变窗口的大小

#将所有的窗口宽高调整为一致
ctrl+w,=

#调整高度
:resize +/-n #增加或减少行数
:res #简写
#调整一行
Ctrl+w,-/+
:resize n #具体高度

#调整宽度
:vertical resize +/-n #增加或减少列数
:vert res #简写
#调整一列
ctrl+w,>/<
:vertical resize n #具体宽度

3.标签页

3.1.新建标签页

#打开一个新标签页
:tabnew
:tabnew filename

3.2.在标签页之间跳转

#下一个
gt
:tabnext

#上一个
gT
:tabprevious

3.3.关闭标签页

:tabclose

3.4.移动标签页

#将标签页移到N位置
:tabmove N

4.折叠效果

#打开一个折叠
zo

#关闭一个折叠
zc

#切换一个折叠
za

#打开所有折叠
zR

#关闭所有折叠
zM

5.文本对象

#使用模式
(修改/删除/可视模式)+内外标志+文本对象

#内对象(以i开头),不包含空白字符
di) #删除括号内内的文本

#外对象(以a开头)
c2aw #修改两个单词,包含空白字符

#文本对象的完整列表
:help text-objects

5.1.常用文本对象

命令 说明 注释
w/W word狭义单词,WORD广义单词
s sentense
p paragraph
t HTML/XML的tag

7.快速恢复列表(quickfix)

8.位置列表

9.参数列表

6.2.2

文件树的浏览

1.内置Netrw文件管理器

#在当前窗口中开启文件管理器
:Ex
:Explore
:e .
#左右分割窗口打开
:Vex
#上下分割窗口打开
:Sex
#左右分割窗口打开,Netrw最左边,高度占满屏幕
:Lex

#打开文件和目录
Enter重命名一个文件或目录

#进入上一层目录
-

#删除一个文件或目录
D

#重命名一个文件或目录
R

2.启用了wildmenu的e命令

#状态栏会显示文件列表
:e+space+Tab
#Tab键遍历选择
#Shift+Tab反向遍历
#左右键也可以选择

#Enter键打开选定的文件或目录

#下方向键进入选定的目录
#上方向键进入上一级目录

#支持部分路径
:e+space+<文件名开始的字符>+Tab

模式详解

1.正常模式

normal mode

:按一次键

命令 说明 注释
ESC
ctrl+c
ctrl+[
其他模式转换到正常模式 (有时按2次)

2.插入模式

insert mode

命令 说明 注释
ctrl+h 删除上一个字符 在终端中也可使用
ctrl+w 删除上一个单词 在终端中也可使用
ctrl+u 删除当前行 在终端中也可使用
ctrl+a 光标移动到开始 只在终端下使用
ctrl+e 光标移动到结尾 只在终端下使用
ctrl+b 光标向前移动 只在终端下使用
ctrl+f 光标向后移动 只在终端下使用

3.命令行模式

command-line mode

3.2.快捷键

命令行模式下的快捷键

快捷键 说明 注释
方向键上/下
ctrl+p/ctrl+n
命令历史记录中切换
ctrl+b/ctrl+e 命令开头(beginning)和命令结尾(ending)之间切换
ctrl+shift+方向键左/右 逐个单词移动光标
ctrl+shift+h/l 逐个字符移动光标
ctrl+f 打开可编辑的命令行窗口 命令行窗口是普通的缓冲区, 可以编辑
:help cmdline-editing 查看命令行的使用方法

4.可视模式

visual mode

命令 说明 注释
v 进入字符可视模式 状态栏文本 --VISUAL–
V 进入可视模式 状态栏文本–VISUAL LINE–
ctrl+v 进入可视模式 状态栏文本–VISUAL BLOCK–
o 跳转到高亮选择的另一端

5.替换模式

输入的文本会覆盖已有的文本.

命令 说明 注释
R 进入替换模式 状态栏的标识文本为–REPLACE–
r 进入单字符替换模式 替换单个字符后马上切换回正常模式

6.虚拟替换模式

和替换模式相似,直接在屏幕上显示而不是文件

命令 说明 注释
gR 进入虚拟替换模式
:help vreplace-mode 查看虚拟替换模式帮助

7.终端模式

terminal mode是vim自带的,v8.1开始支持.

适应管理窗口,需要和tmux配合使用.

命令 说明 注释
:[term]inal 进入终端模式
:term python3 animal_farm.py cat dog 执行单个命令
:term make 异步编译
:!python3 animal_farm.py cat dog 在vim中执行外部命令 不太方便
ctrl+w,N 进入正常模式,(插入模式进入终端模式) 特殊键盘绑定
ctrl+w," 用于添加一个寄存器,把该寄存器的内容粘贴到终端中.
ctrl+w,ctrl+c 将中断快捷键(ctrl+c)发送给终端
#左右窗口使用终端模式
:vertical terminal

8.ex模式

命令行模式变体,现在很少使用.

命令 说明 注释
Q 进入ex模式
visual 退出ex模式

9.选择模式

select mode

功能:输入任意可打印字符立即删除选中文本,然后进入插入模式.

现在很少使用.

命令 说明 注释
gh 进入选择模式
ctrl+g 可视模式下进入选择模式
ESC 退出选择模式

命令的重映射

命令 说明 注释
map 递归映射 可以识别自定义映射
noremap 非递归映射 针对系统默认映射,不管后面的是否映射
:help index 查看内置的按键绑定列表
:map 查看插件和读者自定义的映射
:map g 查看以g开头的映射
:unmap+命令 显示移除插件或自定义的映射
:mapclear 将自定义和默认映射都清除

重映射的表示方法

符号 说明 注释
ctrl+u

alt+u
shift+u

回车
空格
ESC键
tab键
,,, 方向键
, 上下翻页键
~ 12个功能键
,,, Home,Insert,Delete,End
无操作no operation

模式感知

命令 说明 注释
:map
:noremap
1.正常模式
2.可视模式
3.选择模式
4.操作待定模式(operator pending mode)
:nmap
:nnoremap
正常模式
:vmap
:vnoremap
1.可视模式
2.选择模式
:xmap
:xnoremap
可视模式
:smap
:snoremap
选择模式
:omap
:onoremap
操作待定模式
:map**!
:noremap
!**
1.插入模式
2.命令行模式
:imap
:inoremap
插入模式
:cmap
:cnoremap
命令行模式
:help ! 1.强制执行命令
2.为命令添加额外的功能

先导键(leader key)

用户或插件定义的快捷方式的命名空间.先按先导键,然后按下的任何键都来自于该命名空间.

命令 说明 注释
\ 默认的先导键