模式介绍
Linux最小化安装时需要先安装vim编辑器:yum install vim。
vim共分为三个模式:分别是一般命令模式,编辑模式,命令行模式。
一般命令模式:
用户启动vim编辑器,初始就是一般命令模式,可以删除字符、复制粘贴处理内容,不能够输入字符,输入的字符会被当做一个命令。
编辑模式:
一般命令模式按下【i,I,o,O,a,A,r,R】等任何一个字母都会进入编辑模式,左下角会出现insert或replace标志, 此时才可以编辑字符,按下ESC回到一般命令模式,退出编辑。
命令行模式:
在一般命令模式按下【:,/,?】进入 命令行模式,该模式可以查找数据、读取保存数据、退出vim编辑器、显示行号等操作。
模式按键
一般命令模式按键说明
移动光标的方法:
- ↑↓←→:移动光标,可以使用30↑组合,向上移动30行
- pageup、pagedown:移动一页
- 数字0或Home:移动到当前行行首
- 符号$或End:移动到行尾
- G:移动到文件的最后一行
- nG:n为数字,移动到指定行
- gg:移动到文件的第一行,相当于1G
- n<Enter>:光标向下移动n行,等于↓n
上下左右的箭头可以使用hjkl代替
查找与替换:
- /word:向下查找
- ?word:向上查找
- n、N:n重复查找的操作,顺着查找顺序,N反序查找
删除复制与粘贴:
- x、X:x相当于【del】向后删除,X相当于【backspace】向前删除
- nx、nX:n为数字,nx向后删除n个字符,nX向前删除n个字符
- dd:剪切光标所在行
- ndd:剪切关闭所在位置下面的n行
- yy:复制光标所在行
- nyy:复制光标所在的向下n行
- p、P:p在光标的下一行粘贴,P在光标的上一行粘贴
- u:恢复前一个操作,撤销
- ctrl+r:重复上一个操作
编辑模式常用按键
一般命令模式切换到编辑模式按键:
- i与l:进入插入模式,i为当前光标处插入,I为光标所在行行首插入
- a与A:进入插入模式,a为光标所在下一个字符处开始插入,A为本行最后一个字符开始插入
- o与O:进入插入模式,o为光标所在处下方插入新的一行插入,O为光标所在处的上一行插入新的一行开始插入
- r与R:进入替换模式,r只能替换一次,R一直替换直到按ESC
命令行模式
- :w:将编辑的数据写入磁盘文件中
- :w!:当文件为只读时,强制写入该文件,但如果当前用户权限不够也写不进去
- :q:退出vim
- :q!:修改过文件但是不想保存,!为强制退出不保存
- :wq:保存退出
- :wq!:强制保存退出
- :w [filname] :另存为另一个文件
- :r [filename] :读入另一个文件的数据,放到光标所在行后面
- :set nu:显示行号
- :set nonu:取消行号
- :! command:暂时离开vim编辑,可以去执行其他的命令
vim的缓存
在我们用vim编辑文件时,和Windows一样,也会生成一个隐藏的缓存文件,该文件名为.filename.swp,就存在当前编辑的文件目录下,出现不正确的退出vim(如宕机)时或有文件编辑冲突时该文件还会保存,当你下次打开该文件时会出现如下提示:
选择一个, 然后再把缓存文件删除即可。
可视区块
以块或矩形的方式进行选择和复制粘贴等操作。
在一般命令模式:
- v:字符选择,光标经过的地方都会被选择或反选择
- V:行选择,光标经过的行都会被选择或反选
- ctrl+v:以矩形的方式进行选择或反选
- y:将选中的区域复制起来
- d:将选择的区域删除
- p:将刚刚复制的区块,在光标处粘贴
多文件编辑
有时候需要复制一个文件的内容时可以使用多文件编辑操作(因为开启多个vim不能互相复制),使用vim filename1 filename2 ……来打开多个文件。
- :files:可以查看当前正在编辑哪些文件
- :n:编辑下一个文件
- :N:编辑上一个文件
去编辑下一个文件时需要保存当前文件,可以使用!不保存强制转到下一个文件。
多窗口编辑
在一个vim编辑器中打开多个窗口,可以是本文件也可以是其他文件。
- sp [filename]:打开一个新窗口,省略filename就是打开的现在编辑的文件,加filename就是其他文件
- ctrl+w再+↓:先按ctrl+w松手,再按下箭头,则光标移动到下面的窗口
- ctrl+w再+↑:光标移动到上面的窗口
- ctrl+w再+q:删除当前光标所处的窗口
关键字补齐
使用ctrl+x 再按 ctrl+n可以根据当前编辑的文件内容补齐
使用ctrl+x 再按 ctrl+o可以以扩展名为语法进行补充
环境设置
常用设置:
- :set nu和:set nonu:行号设置
- :set autoindent和:set noautoindent:自动缩进设置,默认不会自动缩进
- :set nu和:set nonu:行号设置
- :set all:显示所有的环境设置
- :set:显示与系统默认值不同的环境设置
- :syntax on和:syntax off:是否根据语法显示不同的显色,默认开启
- :set bg=dark和:set bg=light:更改字体的颜色样式
这些设置都是一次性的,想要永久生效需要更改/etc/vimrc文件(需要使用管理员身份)
上面的是全局的生效,如果只想让当前用户生效,可以在家目录新建一个.vimrc的文件,在里面写配置也能生效。
可以在网上搜索一些vim的环境配置,使vim更方便
快捷键设置:
- :map 快捷键 快捷键执行的命令:自定义快捷键
- 如:map ^_ I#<ESC>:设置ctrl+/设置当前行首加上#,即注释,快捷键那一行直接输入键盘的键,而不是输进去的,快捷键不能冲突
- 如:map ^B ^x 表示按ctrl+b时删除本行的第一个字符,取消注释,^x的^是正则表达式
乱码问题
windows一般使用的是GBK编码,而Linux可以通过locale查看编码,一般都是UTF-8编码
解决方法:
1.iconv命令转码
- -f:原始文件编码格式
- -t:输出编码格式
- -o:输出文件名
iconv -f gb2312 -t utf8 aaa.txt -o bbb.txt:把原始文件aaa.txt的gb2312编码转为新文件bbb.txt的utf-8文件(注意是utf8不是utf-8)
2.在windows上另存为,转编码格式为utf-8
windows的换行符比Linux的多了一个^M,会出现错误。
解决方法:
1.在vim中:set ff=unix
2.安装dos2unix工具,用命令dos2unix 文件名
反过来,把linux下写的脚本,在win上打开,就没的换行的,解决办法:
1、安装dos2unix工具,在传回win前,用命令unix2dos 文件名
dos2unix需要自行安装,yum install dos2unix