vim
vim基础
进入vim编辑器
vim默认模式为normal模式
- a,进入插入模式,定位到当前字母 后面,
- A,进入插入模式,定位当当前行后面
- i,进入插入模式,定位到当前字母前
- I,进入插入模式,定位到当前行前面
- o,进入插入模式,向下一行(open a line below)
- O,向上插入
esc: insert->normal
命令模式(Command)
在normal模式下,输入
:
,进入命令模式
- :wq,保存并退出
- 分屏,:vs(vertical split), :sp(split)
- :v,进入visual模式,可以进行文本选中,使用
y
复制,p
粘贴 - :% s/foo/bar/g, 全局替换
s:表示替换,%表示全文搜索,将foo替换成bar,g表示全局替换
- :set nu 设置行号
查找替换
查找
在normal模式下,输入/
+ 带查询的字符串
/word
# 输入n下一个
查询光标字符
# 输入 * / #
替换
:% s/string/string/[g,c,n]
# g:全局
# c:confirm
# n:查询个数
单行替换
# normal模式下, :s /str/newStr
:s /str/newStr
全局替换
# 每行只会替换一个
:%s /str/newStr
# 替换所有
:%s /str/newStr/g
- 替换指定行区间
- 模式下,Ctrl+P可以调出上次命令,Ctrl+N下一条
:10,20s /str/newStr/g
替换单词
# hello 会被替换, helloa不会被替换
:% s/\<hello\>/Hello/g # 全局匹配,正则(单词hello),替换
如何快速纠错
insert模式
- 使用Ctrl+u:快速从当前字符删除到当前行开始
- Ctrl+w:快速删除上一个单词
- Ctrl+H:快速定位到上一个字符[normal]
ctrl+H:删除上一个字符[insert]
- gi:快速进入插入模式,并且定位到上次编辑的位置
vim移动
- hjkl,上下左右
- w/W,单词移动
- b/B,单词
- e/E,单词
代码高亮:syntax on
-
行内搜索,f{char},使用
;
进入下一个 -
水平移动,移动到行首,行尾,
^/0
$,移动到行尾
- 垂直移动,
(),{}
- 页面移动,
gg/GG
,文件开头,结尾
移动到页面Head,middle,lower
- 翻页,Ctrl+u,ctrl+f ,(upword,forward)
快速增删改查
快速删除字符,单词
- x,字符
- d,单词
daw,diw
多文件编辑
- 打开多个文件
vim aa bb
- 查看正在编辑的文件
:ls
- 编辑某个文件
:b 1
:bpre
:bnext
- 窗口
# 分割
:vs
:sp
# 切换
ctrl+w+w
ctrl+w+'hjkl'
:vs bb.txt # 分割窗口编辑bb.txt
# 移动窗口
Ctrl+w+L
# 新开一个窗口,并打开文件
:vsp file
- tab
:tabnew bb.txt # 打开新标签页
# 切换
gt
tabc # 关闭当前标签页中的所有窗口
tabo[only] # 只保留当前标签页
:tabe[edit] file # 在新标签中打开文件
选中
-v
vi[w,char]
#
print('hello world')
vi' # 选中单引号中的所有字符
# a = {'name':'',xxx}
ci{
# 选中整行
Shift+V
# 局部选中
v+方向键
赋值,粘贴
# 赋值
y
# 粘贴
p -- 当选中整行(yy,V,dd)赋值到下一行
P -- 当选中整行(yy,V,dd)复制到上一行
# 赋值当前行
yy
代码格式对其你
:set autoindent
:set paste ,粘贴代码是不乱
全选
gg + V + G
配置文件
vim映射
什么以映射?把一个操作映射到另一个操作
normal模式下的映射
- 使用
-
代替x
:map - x
- 使用空格选中一个单词
:map <space> viw
- 使用Ctrl+d删除一行
:map <c-d> dd
set number
set tabstop=4
" 穘ormal模式下,非递归方式
nnoremap <c-d> dd " 删除行
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" 插入模式
imap <c-d> <Esc>ddi " 删除▒
imap <c-l> <Esc>Vyp<c-o> " 赋值一行
inoremap jj <Esc>`^ " 进入normal模式,同时光标定位到上次编辑的地方
" mommand
com! Fmtjson %!python -m json.tool