[转]vim 常用命令

vim 常用命令
分类: 系统运维2014-08-24 23:15:57
转载:http://blog.sina.com.cn/s/blog_6c090c5d0101c2nv.html
经过一些格式整理
打开窗口
&vim
:new name 新开窗口,如果保存的话文件名就是name
:split 横向切割窗口
:vsplit 纵向切割窗口
&shell
vim -o file1 file2 ... 水平打开多个窗口
vim -O file1 file2 ... 垂直打开多个窗口
vim -d file1 file2 ... 垂直打开多个窗口并且进行比较
vimdiff file1 file2 ... 垂直打卡多个窗口并且进行比较
关闭窗口
&vim
:q / :close 关闭当前窗口
:only 保留当前窗口
:qall 退出所有窗口
:wall 保存所有窗口

切换窗口
&vim
:ctrl w h/j/k/l 分别进行左下上右切换, 或者将hjkl换为上下左右键
:ctrl w 进行依次切换
调整窗口
&vim
ctrl w + 行数增加
ctrl w - 行数减少
n ctrl w + 行数增加n行
n ctrl w - 行数减少n行

ctrl w > 列数增加
ctrl w < 列数减少
n ctrl w > 列数增加n
n ctrl w < 列数减少n

:res num 设置行数为num
:res +num 增加num行
:res -num 减少num行

:vertical res n 设置列数为n
:vertical res +n 增加n列
:vertical res -n 减少n列

ctrl w = 让所有的窗口适中
ctrl w | 调整为最大宽度
ctrl s _ 调整为最大高度

ctrl w H/J/K/L 分别移到最边缘
命名窗口
&vim
:f file 给窗口重命名,那么在保存的时候会生成一个同窗口同名的新文件
多窗口编辑

水平分割

:sp 当前编辑的文件,分割到一个窗口再打开
:sp filename 分割一个窗口,打开文件filename
:split 同sp
:new
:new filename

垂直分割

:vsplit
:vnew

调整窗口位置

ctrl w H/J/K/L 将当前窗口移动位置
打开多个文件
&shell
vi a b c 打开多个文件
&vim
:n 跳到下一个文件
:e# 回到刚才编辑的文件
:prev 上一个文件
:next 下一个文件
:prev! 上一个文件
:next! 下一个文件
:first 第一个文件
:last 最后一个文件
:args 显示打开的文件列表

浏览文件
&vim
:Ex 浏览当前目录下的所有文件
:Sex 水平分割当前窗口,并在当前窗口打开目录查看
:ls 显示当前的buffer情况
vim与shell切换
&vim
:shell 可以在不关闭vi的情况下切换到shell
:exit 从shell回到vi
执行shell命令
&vim
:!command 如::!pwd :!ls
撤销重做
&vim
u, U 撤销上一次操作
:e! 撤销未保存的全部编辑,并重新载入文件
ctrl r 恢复撤销的操作
保存退出
:w 保存
:q 关闭文件
:wq 保存并且关闭文件
:q! 不保存强制退出
:qa 关闭所有文件退出
光标定位
w 下一个字首
e 下一个字尾
^ 行首
$ 行尾
A 行尾插入
o 添加空行
文件内查找
&vim
n, N 找到key后,n跳到后一个位置,N跳到前一个位置
, # 光标所在处的key为关键字,精确匹配
g
, g# 光标所在处的key为关键字,模糊匹配
/key 向后模糊匹配
?key 向前模糊匹配
/, /? 精确匹配
批量替换
&vim
%s/要被取代的字符串/新的字符串/g
复制粘贴删除
yy 复制行
nyy 复制n行
p 粘贴
dd 删除行
ndd 删除n行
yw 复制字
dw 删除字
v, V, ctrl v 进入可视化模式, y 复制选择块
显示与编辑样式
set statusline+=%f, set laststatus=2 在状态行显示文件名,路径,行数
set nu 显示行号
set nonu 影藏行号
set list 显示断行符等特殊符号
set autoindent 自动缩进
set cindent c样式的缩进
多行注释
ctrl v 进入列编辑模式,选中需要注释的行的开头,按下大写I, 再按下ESC
缓冲区编辑
&vim
:e filename 打开新的缓冲区看别的文件(如果你之前在同时编辑多个文件)
:e# / ctrl ^ 切换最近的两个缓冲区
:buffers 显示缓冲区文件列表
:bd / :bd 1 / :bd 2 关闭其中一个
:b 1 / :b 2 切换到其中一个
:bp 切换上一个
:bn 切换下一个
ctrl w ^ 让缓冲区的文件来分割窗口
保存回话
&vim
:mksession! xxx.vim(Session.vim) 保存当前的vim状态
source Session.vim 载入保存的回话
&shell
vim -S 自动载入之前的回话
配置自动保存和载入回话
在配置好之后,只需要在第一次执行 :mksession! xxx.vim,以后就直接在当前目录vim即可
~/.vimrc
" auto save and load session
let g:
let g:OrigPWD=getcwd()
if filereadable(g:AutoSessionFile)
if argc()==0
au VimEnter * call EnterHandler()
au VimLeave * call LeaveHandler()
endif
endif
function! LeaveHandler()
exec "mks! ".g:OrigPWD."/".g:AutoSessionFile
endfunction
function! EnterHandler()
exe "source ".g:AutoSessionFile
endfunction
热门插件
=> scripts -> browse all
ctags
yum install ctags

创建ctags文件,在需要创建tags文件的目录下用

&shell
ctags -R

使用ctags

&vim
ctrl ] 当光标在函数上是,会跳到函数定义处
ctrl t 返回
:ta functioname 跳转到函数定义出
&shell
vim -t functioname 打开时搜索并且跳转
:tnext / :tprev / :tn / :tp 多个匹配的tags时跳转
未完待续……

原文地址:https://www.cnblogs.com/spfanlost/p/14772239.html