一、vi快捷键
移动光标快捷键 | |
hjkl | 方向键:←↓↑→ |
数字+j/k | 向下/向上多少行 |
ctrl+f | 向下翻一页 |
ctrl+b | 向上翻一页 |
ctrl+d | 向下翻半页 |
ctrl+u | 向上翻半页 |
ctrl+o | 回到之前的位置 |
ctrl+i | 回到下一个位置 |
+/- | 光标移动到非空格符的下/上一列 |
数字+空格 | 向右移动这一行的n个字符 |
数字0或Home键 | 光标移动到这一行的首字符 |
$或End键 | 光标移动到这一行的最后一个字符 |
H | 光标移动到屏幕最上方第一个字符 |
M | 光标移动到屏幕中间第一个字符 |
L | 光标移动到屏幕最下方第一个字符 |
G | 移到文件最后一行 |
数字+G | 移动到文件的第多少行 |
gg | 移动到文件的第一行 |
数字+enter | 光标向下移动n行 |
查找与替换 | |
/word | 向下查找某个单词,按n正向查找 |
/word\c | 忽略一次大小写查找单词 |
?word | 向上查找某个单词,按N正向查找 |
:#,#s/old/new/g | 在#行和#行之间全部替换成新的单词 |
:1,$s/old/new/gc | 从第一行到最后一行替换单词,并询问 |
删除、复制与粘贴 | |
x,X | x-向后删除字符,X-向前删除字符 |
数字+x | 向后删除n个字符 |
dd | 删除光标所在那一行 |
数字+dd | 向下删除n行 |
d1G | 删除从光标所在处到第一行的数据 |
dG | 删除从光标所在处到最后一行的数据 |
d$ | 删除从光标所在处到该行最后一个字符 |
d0 | 删除从光标所在处到该行第一个字符 |
dw | 从光标处删除一个单词 |
数字+dw | 从光标处删除n个单词 |
yy | 复制光标所在那一行 |
数字+yy | 复制光标所在向下n行 |
y1G | 复制光标所在到第一行的数据 |
yG | 复制光标所在到最后一行的数据 |
y0 | 复制光标所在到该行第一个字符的所有数据 |
y$ | 复制光标所在到该行最后一个字符的所有数据 |
p,P | p向后粘贴,P向上粘贴 |
J | 将光标所在行与下一行整合成同一行 |
u,U | u-撤销上一次操作,U-撤销整行操作 |
ctrl+r | 恢复撤销 |
. | 重复前一个动作 |
i,I | i-从光标处插入,I-从所在行第一个字符插入 |
a,A | a-从光标所在位置下一个字符插入,A-从最后一个字符插入 |
o,O | o-在光标所在行下一行插入,O-在光标所在行上一行插入 |
r,R | r-取代一次,R-一直取代 |
指令列储存及离开 | |
:w | 保存 |
:w! | 文件为只读属性时强行写入 |
:q | 离开 |
:q! | 放弃修改强行离开 |
:wq | 保存后离开 |
:wq! | 文件为只读属性时强行写入并退出 |
:w 新文件名 | 另存为 |
:! 命令 | 切出去执行命令 |
:!部分命令,按ctrl+d | 显示联想的命令 |
:r 文件名 | 从光标所在行后面读入别的文件的内容 |
:r !,命令 | 读入命令的输出 |
按v,:w 新文件名 | 按v进入视图模式,:w 新文件名是保存光标所在行并另存 |
:#,# w 新文件名 | 另存第几到第几行之间的内容并另存 |
:set nu/nonu | nu-显示行号,nonu-不显示行号 |
:set ic/noic | ic-忽略大小写,noic-不忽略大小写 |
:set hls is | 高亮显示查找到的字符 |
:nohlsearch或:set nohls | 取消高亮显示 |
二、vim
1、暂存档和恢复
当使用vim时,vim会在同一目录下建立一个名为“.编辑的文件名.swp”的存档。当使用vim再次打开之前的文件时,会出现错误提示,并有几个选项可供选择:
O | 以只读模式打开 |
E | 放弃载入暂存档,直接编辑(不推荐) |
R | 恢复暂存档,但是需要手动删除swp文件,以便下次用新的swp |
D | 删除暂存档,重新编辑 |
Q | 离开vim |
A | 与Q类似 |
2、区块选择
v | 字符选择,会将光标经过的地方反白选择 |
V | 行选择,会将光标经过的行反白选择 |
ctrl+v | 区块选择,可以多行选择,有点类似列编辑 |
y | 将反白的地方复制 |
d | 将反白的地方删除 |
3、多文件编辑
vim file1 file2 ...
:n | 编辑下一个文件 |
:N | 编辑上一个文件 |
:files | 列出vim开启的所有文件 |
4、多窗口编辑
:sp | 将当前编辑中的文件分成上下2个窗口,可分多次 |
:sp 文件名 | 可引入其他文件,引入的新文件在最上面的窗口展示 |
ctrl + w + j/↓ | 先按住ctrl不放,再按下w之后放下松开所有键,再按下j或↓可以上下切换窗口 |
ctrl + w + k/↑ | 先按住ctrl不放,再按下w之后放下松开所有键,再按下k或↑可以上下切换窗口 |
ctrl + w + q | 如果没有做任何修改,先按住ctrl不放,再按下w之后放下松开所有键,再按下q可以退出 |
5、vim环境设定与记录
:set nu/nonu | 显示/不显示行号 |
:set hlsearch/nohlsearch | 将查询到的匹配字符高亮/不高亮显示 |
:set autoindent/noautoindent | 自动/不自动缩排,缩排就是当按下enter时,光标不会在行首,而是在与上一排对齐的非空字符处 |
:set backup/nobackup | 设置自动备份存档,会在相同目录下生成”filename~“的文件,一般不设置自动存档 |
:set ruler | 显示右下角的状态栏 |
:set showmode | 显示左下角的状态栏 |
:set backspace=0/1/2 | 在按下i进行编辑时,2-可以删除任意字符,0/1-仅可删除刚输入的字符,不可删除原本就存在的字符 |
:set all | 显示目前所有的环境参数设定值 |
:set | 显示与系统设定值不同的参数,即自行更改的参数 |
:syntax on/off | 语法检查,适用于程序编写,会有不同的颜色显示 |
:set bg=dark/light | 设置背景颜色,默认是light |
这些设定值一般都放在/etc/vimrc下,这里介绍一下rc文件,rc即“run command”rc是所有脚本类文件的后缀,这些脚本通常在程序启动阶段被调用。但是此处不建议修改/etc/vimrc这个文件,建议修改~/.vimrc。其中~/.vimrc的注释是使用双引号(“),并且里面的设置内容使用
:set ruler和set ruler是一样的,即可以有也可以没有冒号。
6、vim中文乱码问题
中文乱码与以下几点有关:
- /etc/sysconfig/i18n
- LANG环境变量
- 文件的原本编码
- 远程连接的软件使用的编码
最主要的是上面的第3点和第4点,如果这2个编码一致,就不会出现中文乱码。
7、DOS和Linux的断行符
DOS的断行符是^M$,及CRLF,Linux的断行符是$,及LF。Linux指令执行的依据是Enter,也即LF。如果在Linux环境下执行dos系统的shell脚本,就可能会报错。所以需要将dos格式的脚本转换为linux格式。Linux为我们提供了互相转换的命令:
dos2unix/unix2dos 【-kn】 原文件 新文件
-k 保留原文件的mtime,不修改mtime
-n 保留原文件,生成新文件
8、编码转换
iconv -f 原编码 -t 新编码 文件名 【-o 新文件名】
-l 列出iconv支持的所有编码格式
-f from的意思,后面接原来的编码
-t to的意思,后面接新的编码
-o 如果要保留原文件,使用-o 新文件名
iconv还可以接收管道流