# vim

  • 普通模式
  • 可视模式: 对一整块内容进行操作,按 v 进入
  • 插入模式: 按 i 进入
  • 命令模式: 按 : 进入

# 普通模式下的快捷键

# 移动

  • h,j,k,l,0,^,$: 左,上,下,右,行首,行尾

# 单词跳转

  • w/W: 正向移动到下一个单词开头,大写的不包含特殊字符,比如 ,
  • b/B: 反向移动到下一个单词开头
  • e/E: 正向移动到下一个单词结尾
  • ge:: 反向移动到下一个单词结尾

# 跳转

  • Ctrl-f/F: 下一页
  • Ctrl-b/B: 上一页
  • Ctrl-d/u: 向下/上翻半页
  • gg: 跳转到文件首行
  • <line_number>gg/G: 跳转到指定行
  • G: 跳转到文件最后一行
  • {g}+Ctrl-g/G: 查看文件信息,{g} 更加详细

# 缩进(<< 相反)

命令 功能
>> / :> 右缩进
m,n> / :m>(n-m+1) m 到 n 行缩进
m>n 等价于命令 :m,m+n-1> m 行开始共 n 行缩进一次

# 删除、复制与粘贴

对比

Windows Vim 不同处
cut delete 和剪切相同,而不是直接删除
copy yank 等同于复制由于c用于修改(change)被迫选了yank
paste put 粘贴完全相同

# 寄存器

参考文章

命令模式下输入 :register 或者缩写 :reg 进入寄存器

命令模式下 :h reg 查看寄存器相关帮助

创建一个寄存器 "{name/num} 然后执行操作即可

类型 含义 表示方法 举例 特点
无名寄存器 默认寄存器 "" "" p=p 会被最后一条覆盖
数字寄存器 "+{0-9}
缓存最近10次操作
"0
"{0-9}
"0P
"1P
0用于复制专用,1-9用于最精9次行删除或修改记录
有名寄存器 26英文字母命名有名寄存器 "[a-z]/[A\Z] "ayz "A会通过^J追加到"a寄存器中
黑洞寄存器 有去无回 "_ "_dw 只想删除而不想覆盖无名寄存器

# 基础操作

按键操作 定义
d=delete=cut 剪切
y=yank ~= copy 类似于复制
p/P 粘贴到光标后/前
u = undo 撤销之前的操做
Ctrl-r = redo 重做/恢复之前的操作
yw 复制当前光标单词
y2w 复制正向两个单词
p/P = put ~= paste 粘贴到光标后/前
yy 类似于 dd 复制当前光标整行

普通模式下 f{space} 可以查找当前行的空格

# 组合删除

([count]operation [count]{motion})

操作 作用
x/X 删除光标下/前单个字符
dw(d=delete w=word) 删除一个单词(必须在词首)
d{hjkl} 删除到上下左右一个操作前的字符
d$ = D 删除光标到行尾的字符
d^ 删除光标到行首的字符
dd 删除当前整行
{n}dd 向下删除n行(包含当前行)
{n}dw 删除争先单词5次
3w 正向移动单词三次
D3w 正向删除3w动作
2d3w 正向删除3w动作两次

# 修改、查找与替换

# 插入

按键操作 定义
Shift+i/A 插入模式并移动到行首/尾
a/i 光标后/前插入
[n]O/o 行前/后插入n次
[n]+i 插入模式重复n次

# 转换

按键操作 定义
~ 单个字符大小写转换
g ~ w 单词大小写转换
g~$/g~~ 整行大小写转换
gU/uw 单词转换成大/小写

# vimrc配置文件

默认配置文件位置 /usr/share/vim/vimrc

  • vim run command
  • 系统级 vimrc 和用户级 vimrc
  • 每一行作为一个命令执行
  • 通过 " 进行注释

vim 命令模式下输入 :h vimrc 查看 vimrc 帮助信息 :version 查看各个级别 vimrc 所在位置

# set

大多数配置都是通过 set command 来配置,在命令模式下 :set number? 跟上 ? 可以查看是否开启了配置,set number 可以开启配置,set nonumber 可以关闭设置

" 是否与 vi 完全兼容,不兼容好
set nocompatible

" 语法高亮
syntax on

" 命令模式下历史记录条数,默认50
set history=500

" 右下角当前光标所在位置百分比
set ruler

" hightlight search matches 回车时高亮
set hlsearch

" enable incremental searching 边搜索边高亮
set incsearch

" ignore case when searching 忽略大小写
set ignorecase

" override the 'ignorecase' option if the search pattern contains uppercase characters
set smartcase

" turn on file backups
set backup

" don't line wrap mid-word
set lbr

" copy the indentation from the current line
set autoindent

" enable smart autoindenting
set smartindent

" use spaces instead of tabs
set expandtab

" enable smart tabs
set smarttab

" make a tab equal to 4 spaces
set shiftwidth=4
set tabstop=4

" Tell vim what background are using
set bg=light
set bg=dark
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

# map

设置快捷键

" 在标准模式下,<CR> 代表回车换行,<Space> 代表空格 I 代表在行首输入
map <F3> i<ul><CR><Space><Space><li></li><CR><Esc>I</ul><Esc>kcit
1
2

# let

声明变量

" 设置 leader=","
let mapleader=", "

" quickly save your file,在标准模式下,输入 ,w 就可以保存文件了
map <leader>w :w!<cr>
1
2
3
4
5