vim
信息汇总
ubuntu设置vim
文件:etc/vim/vimrc
set all
:查阅目前vim的设置set nu/nonu
:设置与取消行号set hlsearch/nohlsearch
:设置与取消高亮度查询,默认是高亮度查询set autoindent/noautoindent
:是否自动缩排set tabstop=4
:缩进4个空格set showmode
:在下面状态栏显示诸如 --INSERT–之类的字眼syntax on/off
:是否依据程序语法显示不同颜色set bg=dark/light
:可以显示不同的颜色,默认是lightset ruler
:可显示最后一行的状态- 命令模式下取消高亮(一般是搜索带来的高亮),输入
: nohlsearch
也可以:set nohlsearch
; 当然,可以简写,noh或者set noh。
一般模式下
.
: 重复上次的修改*
:查找当前光标所在的单词u
:撤销所做的修改ctrl+r
:反撤销b
:移动到单词开头x
:删除当前光标下的字符:e
: 重新加载该文档zz
:当前行如果处于窗口底部时,可以把当前行显示在窗口正中ga
:光标所在字符的编码Ctrl+a/Ctrl+x
:对光标下的数字执行加减,在不带次数时逐个加减,如果带一个次数前缀就可以任意加减,如:10+Ctrl+a;如果当前光标下不是数字,会向前查找一个数字,并进行加减- :
r filename
:在一个文件的一般模式中,将filename文件的内容读入到该文件光标所在行的后面 - 块选择
v
:字符选择,光标经过的地方反白V
:行选择:光标经过的行反白ctrl+v
:区块选择y
:将选白的方法复制d
:将选白的地方删除p
:粘贴到光标所在的位置
- 移动光标:
0/home
:跳到行首$/end
:跳到行尾Ctrl+f
:向下移动一页Ctrl+d
:向下移动半页Ctrl+b
:向上移动一页Ctrl+u
:向上移动半页n [空格]
:该行向右移动n个字符G
:移到这个文件的最后一行nG
:移到文件的第n行gg
:移到文件的第一行n [Enter]
:光标向下移动n行
- 大小写变换:
g~
:反转大小写gu
:转换为小写gU
:转换为大写
- 操作符+动作命令=操作:
yy
:复制光标所在的一行nyy
:复制光标所在的向下n行p/P
:p为粘贴在光标所在的下一行;P为粘贴在光标所在的上一行- gc+动作:切换指定行的动作状态
- c+动作:
cw
: 删除当前光标所在的单词并进入插入模式cc
:删除当前光标所在行并进入插入模式
- d+动作:
dl
:删除一个字符dd
:剪切光标所在的一行db
:删除从光标开始位置到单词开头,但不会删除光标所在的字符,是反向删除的命令dw
:删除从光标所在位置开始的整个单词,如果这个单词和下一个单词之间有空格,会删除所有中间的空格;删除多个单词可以使用xdw或dxw,x为数字daw
:删除整个单词与dw不同的是,光标不管在单词的什么位置都能够删除,也会删除与下一个单词之间的所有空格(delete a word);d$
:删除从光标开始到行尾连同光标
s
:删除光标下的字符并进入插入模式f
:f+{x}
:移动到这一行下一个x的位置F+{x}
:移动到这一行上一个x的位置
;
:下一个x的位置,“,
”:上一个x的位置- 查找:
/word
:向下查找一个字符或字符串,n向下继续寻找; “\>
” 是一个特殊的记号,表示只匹配单词末尾。类似地,“\<
” 只匹配单词的开头。这样,要匹配一个完整的单词 “the”,只需:/<the>?word
:向上查找一个字符或字符串- :1,$s/word1/word2/g:从第一行到最后一行查找字符串word1,并将该字符串用word2替换//这个指令好像不能用,使用:%s/word1/word2/g可以
- :
n1,n2s/word1/word2/g
:在第n1行到n2行之间查找word1并用Word2替换
- 正则表达式查找:
- 多行注释和取消注释:
- 注释:按ctrl+v后j或k进行块选择,I(大写i)后输入注释符,esc退出后注释成功
- 取消:ctrl+v,按l(右移动)选中要取消的列数(如"//"需选中两列),j/k选中行数,d取消注释
- 其他未分类:
>G
:增加从当前行到文档末尾的缩进- 替换:
%s/word1/word2/g
:将word1替换成word2
- set命令:
:set hls
:光标所在的单词高亮
插入模式
插入-普通模式:执行一次普通命令,执行完后马上返回到插入模式
- 切换到插入模式:
i/I
:i为当前光标处插入;I为当前行的第一个非空格处插入o/O
:o为在当前光标的下一行插入,O为在当前光标的上一行插入a/A
:a为从目前光标所在的下一个字符开始插入;A为从光标所在行的最后一个字符处插入
- 返回普通模式:
Esc/Ctrl+[
:切换到普通模式Ctrl+o
:切换到插入-普通模式
- 删除操作:
Ctrl+h
:删除前一个字符,同退格键Ctrl+w
:删除光标所在字符前的单词,不删除光标坐在字符Ctrl+u
:删除至行首,不删除光标所在字符Ctrl+r{register}
:粘贴,register是想要插入的寄存器
Ctrl+r=
:访问表达式寄存器,可以随时随地做运算P31- Ctrl+v插入字符:
- {code}:使用字符编码插入字符,code为字符编码,3位,
- Unicode使用4位16进制输入,Ctrl+v+u+code;
- 后跟一个非数字键,会插入按键本身代表的字符
一般模式到命令行模式
- :
w
:将编辑的数据写入硬盘 - :
wq
:写入后离开 ZZ
:如果文件没有改动,则不保存后离开;如果文件有改动则保存后离开- :
r filename
:将filename文件的内容读入到该文件光标所在行的后面 - :
w filename
:将编辑的数据保存成另一份文件(相当于文件另存为)
其他用到的总结
- 注释多行:esc进入一般模式Ctrl+v块选择要注释的行大写I即在行首非空格处插入(这里会在行首插入)输入注释符//再esc退出(如果不esc只能注释一行),完成注释;取消注释用d替换//
- 自动补全:
- Ctrl+n/p:
- 管理多文件:
- vim * . *:打开多文件
- :ls : 列出所有载入内存中的缓冲区的列表
- :bprev / :bnext / :bfirst / :blast :反向或正向移动,调到列表的开头或结尾
- :buffer N:直接跳转到第N个缓冲区
- :bdelete N1 N2/ N,M bdelete:删除缓冲区
- 创建分割窗口:
Ctrl+w,s
:水平分割Ctrl+w,v
:垂直分割:sp {filename}
:水平分割并在分割的窗口打开filename文件:vsp {filename}
:垂直分割并在分割窗口打开filename文件
- 在窗口之间切换:
Ctrl+w,w
:在窗口之间循环切换Ctrl+w,h
:切换到左边的窗口Ctrl+w,l
:切换到右边的窗口Ctrl+w,k
:切换到上边的窗口Ctrl+w,j
:切换到下边的窗口
- 关闭窗口:
clo/Ctrl+w,c
:关闭活动窗口on/Ctrl+w,o
:只保留活动窗口,关闭其他所有窗口
- 改变窗口大小和重新排列窗口:
Ctrl+w,=
:使所有窗口等宽,登高Ctrl+w,_
:最大化活动窗口的高度ctrl+w,|
:最大换活动窗口的宽度
- :
f
:查看文件名 e
:刷新文件- 在文件间跳转:
Ctrl+o/Ctrl+i
:在两个文件之间来回跳转( / )
:跳转到上一句 / 下一句开头{ / }
:跳转到上一段 / 下一段开头H / M / L
:跳到屏幕最上方/正中间/最下方gf
:跳到光标下的文件名Ctrl+]
:跳到光标下关键字的定义之处,但并没起效,提示缺少tag
- 多文件编辑: