目录
1.vi与vim
简介
vim可以视为vi的高级版本
vi的三种模式
一般命令模式:正常使用 vi或vim打开的页面即为一般命令模式
编辑模式:在一般命令模式按下特定键盘按键即可操作
命令行模式:输入 : / ? 即可启用命令行模式
vi filename 可用于打开旧文件或建立新文件(若无filename文件存在即建立新文件)
按键说明
一般命令行模式下
光标移动
h | 左 |
j | 下 |
k | 上 |
l | 右 |
若想多次移动,可通过 num按键 的组合如下30行 30j | |
ctrl+f | 向下移动一页,相当于pagedown |
ctrl+b | 向上移动一页,相当于pageup |
ctrl+d | 向下半页 |
ctrl+u | 向上半页 |
+ | 光标移动到非空格符下一行 |
- | 光标移动到非空格符上一行 |
num<space> | 向右移动num个字符 |
0或 home | 移动到一行的第一个字符处 |
$或 end | 移动到一行的最后一个字符处 |
H | 光标移动到屏幕第一行第一个字符处 |
M | 光标移动到屏幕中间第一个字符 |
L | 光标移动到屏幕最后一行第一个字符 |
G | 移动到最后一行第一个字符 |
gg | 移动到第一行第一个地字符 |
numG | 移动到第num行 |
n<enter> | 与numj一样 |
查找替换
/abc | 向光标下方查找 abc |
?abc | 向光标上方查找 |
n | 重复前一个查找操作 |
N | 与n相反 |
:n1,n2s/abc1/abc2/g | 在n1与n2行之间查找abc1并替换为abc2 |
:1,$s/abc1/abc2/g | 全文查找并替换 |
:1,$s/abc1/abc2/gc | 询问是否替换 |
复制粘贴删除
x与X | x为删除后一个字符,X相反 |
numx | 向后连续删除num个 |
dd | 剪切光标所在行 |
numdd | 剪切包括光标所在行向下num行 |
d1G | 剪切包括光标行到第一行 |
dG | 剪切包括光标行到最后一行 |
d$ | 剪切光标所在处到该行最后一个字符 |
d0 | 删除光标所在处到该行第一个字符 |
yy | 复制光标所在行 |
numyy | 包括光标行向下复制num行 |
y1G | 复制光标行到第一行的内容 |
yG | 复制光标行到最后一行的内容 |
y0 | 复制光标前一个字符到第一个字符 |
y$ | 复制光标到最后一个字符 |
p与P | 在光标后方粘贴 在光标前方粘贴 |
J | 将光标所在行与下一行合并成一行 |
c | 删除,如c1j,向下删除1行,光标所在行也会删除,总计两行 |
u | 撤销操作 |
ctrl+r | 重做操作 |
. | 重复上一个动作(不包括本身) |
进入编辑模式的按键
ESC | 推出INSERT模式 |
i与I | i为在目前光标所在处插入,I为在本行第一个非空格符处插入 |
a与A | a为在光标所在处后一位插入,A为在本行最后一个字符后插入 |
o与O | o为在光标所在行下插入一行,O为在光标所在行上插入一行 |
r与R | r为替换光标处的字符一次,R为一直替换直到esc |
命令行模式按键
:w | 将数据写入磁盘 |
:w! | 强制写入 |
:q | 退出 |
:q! | 强制退出 |
:wq | 保存后退出 |
ZZ | 若未修改,则直接退出,若修改,则保存后退出 |
:w filename | 另存为新文件 |
:r filename | 将 filename 文件内容添加到光标所在行后面 |
:n1,n2 w filename | 将n1到n2的内容保存为 filename 文件 |
:! command | 如 :! ls 即执行ls命令,按提示建后返回文件 |
:set nu | 显示行号 |
:set nonu | 取消行号 |
关于vim的缓存文件 .swp:每用vim打开一个文件时就会加载一个swp文件,当文件非正常中断,缓存文件无法关闭,即一直存在,每次打开原文件都会出现警示界面,可以保存后删除旧的swp文件。多人编辑时也会出现警示。
可视区块
v | 将光标经过的地方反白 |
V | 将光标经过的行反白 |
ctrl+v | 矩形框选择 |
y | 复制 |
d | 删除 |
p | 在光标处粘贴 |
多文件编辑
前提是用 vim filename1 filename2 ... 打开多个文件
:n | 编辑下一个文件 |
:N | 编辑上一个文件 |
:files | 列出目前开启的所有文件 |
同终端多窗口编辑
:sp filename | 不输入filename即打开自己 |
ctrl+w+w | 光标移动到下一个窗口 |
ctrl+w+j | 光标移动到下一个窗口 |
ctrl+w+k | 光标移动到上一个窗口 |
ctrl+w+q | 关闭当前窗口,等于 :close,不过close无法关闭最后一个窗口 |
vim的关键词补全功能
ctrl+x接ctrl+n | 文件中出现的词作为关键词补全 |
ctrl+x接ctrl+f | 当前目录内的文件名为关键词补全 |
ctrl+x接ctrl+o | 文件扩展名为语法补充,如.html .cpp .php等 |
vim的环境设置与记录
可在~下创建 .vimrc 文件设置环境值
:set nu :set nonu | 显示行号 |
:set hlsearch :set nohlsearch | hight light search,将查找到的词高亮显示 |
:set autoindent :set noautoindent | 自动缩进 |
:set backup | 是否自动保存备份文件,修改文件时,源文件会被保存为filename~的文件 |
:set ruler | 是否显示右下角状态栏 |
:set showmode | 是否显示左下角状态栏 |
:set backspace= | 0或1时,backspace无法删除原本文件中存在的字符,可删除刚输入的字符,3时都可删除 |
:set all | 显示所有的参数设置值 |
:set | 显示手动变动的参数 |
:syntax on :syntax off | 开启后会依据语法来显示不同的颜色 |
:set bg=dark :set bg=light | background的色调,深色或浅色 |
DOS与linux的转换
由于DOS的换行符比linux多个符号,导致shell脚本无法运行
dos2unix -k file 保留文件原本的mtime
-n file newfile 保留原本文件,修改的文件输出到新文件
unix2dos同上
语系编码转换
iconv --list 列出支持的语系
-f 原编码 -t 新编码 filename 从原编码转换到新编码
-o newfile 保存为新文件