VIM程序编辑器
vi与vim
vi:是一种文字处理器
所有的unix like系统都会内置vi文本编辑器
很多软件的编辑接口都会主动调用vi
vim:vi的高级版。是一个程序开发工具
会依据文件的扩展名或者文件内的开头信息判断文件内容,自动调用该程序的语法判断式,用颜色来显示程序代码
vi的使用
三种模式
一般模式 搜索与替换、删除字符、删除/复制/粘贴整行
编辑模式 编辑文件内容
命令行模式 即退出VI
一般模式常用按钮
光标移动
G 移动到文件最后一行
n+G 移动到文件第n行
n+↑ 上移n行
n+↓ 下移n行
[ctrl]+[f] 下翻页
[ctrl]+[b] 上翻页
0或[home] 移动到行首
$或[end] 移动到行尾
查找与替换
/word 向下查询word
?word 向上查询word
n 重复前一个查询
N 反向重复前一个查询
:n1,n2s/word1/word2/g 在n1与n2行之间,将word1替换为word2,且不询问
:1,$s/word1/word2/g 从第一行到最后一行,,将word1替换为word2,且不询问
:1,$s/word1/word2/gc 从第一行到最后一行,,将word1替换为word2,询问
多行注释 :n1,n2s/^/#/g
行号
:set nu 显示行号
:set nonu 不显示行号
一般模式--->编辑模式
i 在光标所在处插入
I 在光标所在行第一个非空格符处插入
a 在光标所在处的下一个字符处插入
A 在光标所在行的最后一个字符处插入
o 在光标所行的下一行插入新的一行
O 在光标所在行的上一行插入新的一行
r 只会替换光标所在的那个字符一次
R 一直替换,直到[esc]
一般模式--->命令行模式
:q! 不保存退出
:wq 保存退出
:w[filename] 另存为filename
:r[filename] 读入filename的文件数据,加到光标所在行后面
:n1,n2 w [filename] n1到n2行保存为filename
:! command 暂时离开vi到命令行模式,并执行command
.swp文件
多人同时编辑
找到对应人协商
不明原因
不确定是否有用:Recover 打开.swp文件,自行选择是否保存
确定无用:Delete
注:.swp文件不会自动删除,需手动删除
vim的功能
块选择
v 字符选择,将经过的字符反白选择
V 行选择,将经过的行反白选择
[ctrl]+v 块选择,以快的方式选择,如下图
y 复制反白区域
d 删除反白区域
多文件编辑
前提:
同时打开多个文件 vi file1 file2
一般模式下切换文件
:n 编译下一个文件
:N 编辑上一个文件
:files 列出这个vim目前打开的所有文件
多窗口功能
:sp [filename] 打开新窗口,如果没有filename参数,则两个窗口为同一个文件
[ctrl]+w+↑ 移动到下方的窗口
[ctrl]+w+↓ 移动到上方的窗口
[ctrl]+w+q 关闭该窗口
按法:先按[ctrl]和w,然后都松开,再按↑
vim环境设置与记录
~/.viminfo vim会主动将以前的操作记录下来
:set all 查阅目前的所有环境设置值
:set 显示自己变动过得参数
:set nu 显示行号
:set nonu
:set hlsearch 查找的字符串高亮
:set nohlsearch
:set autoindent 自动缩排
:set noautoindent
:set backup 自动保存备份文件.默认不自动保存
:set nobackup
:set ruler 是否显示右下角的状态说明
:set noruler
:set showmode 是否显示左下角状态说明
:set backspace=(012) 是否允许退格删除。0/1--删除刚输入的字符,无法删除原本存在的文字;2--可删除任意字符
:syntax on 根据语法显示颜色
:syntax off
:set bg=dark 设置基本色调
:set bg=light
其他vim使用注意事项
中文编码
linux默认支持的语系数据 /etc/sysconfig/i18n
查看当前bash语系编码 echo %LANG
修改语系编码 LANG=zh_CN.big5
DOS与Linux的断行字符
DOS(Windows)中断行字符为^M$,CR与LF
Linux下只有$,即只有LF
第一种方法(命令行模式)
dos2UNIX [-kn] file [new file]
-k 保留文件原本的mtime(文件内容modification)时间
-n 保留旧文件,制定新文件
第二种方法(一般模式)
:set ff? 查看当前文件编码格式
:set fileformat=unix
文件语系编码转换
iconv -f 原本编码 -t 新编码 filename [-o newfile]
--list 列出iconv支持的语系数据
-f 原本的编码
-t 新编码
-o 保留旧文件,制定新文件