目录
- 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)
用户或插件定义的快捷方式的命名空间.先按先导键,然后按下的任何键都来自于该命名空间.
命令 | 说明 | 注释 |
---|---|---|
\ | 默认的先导键 |