Vim/Vi 简介
Vim/Vi 是一个功能强大的全屏幕文本编辑器,是Linux/Unix上最常用的文本编辑器。作用是:建立、编辑、显示文本文件。(所有Linux和Unix中都会默认安装)
Vim/Vi 用于在使用Linuxserver时,进行脚本编程和配置文件修改时主要使用,比较好用。
Vim/Vi 没有菜单,只有命令。(Vim是Vi的一个增强版)(Vim 下载:www.vim.org)
一般使用Vim编写系统配置文件和写shell脚本时,需掌握如下命令:
插入命令:
a 在光标后附加文本
A 在本行行末附加文本
i 在光标前插入文本
I 在本行开始插入文本
o 在光标下方插入一行
O 在光标上方插入一行
定位命令:
h、方向左键 光标左移一个字符
j、方向下键 光标下移一行
k、方向上键 光标上移一行
l、方向右键 光标右移一个字符
(向上、下移动n行可以用nj、nk、n方向上键、n方向下键;向左向右移动n个字符可以用nh、nl、n方向左键、n方向右键)
$ 、End键 移至行尾
0 (零键)、Home键 移至行首
H 移至屏幕上端
M 移至屏幕中央
L 移至屏幕下端
:set nu 显示行号
:set nonu 取消行号
gg 到第一行
G 到最后一行
nG、:n 到第n行
删除命令:
x 删除光标所在处字符
nx 删除连同光标所在位置及光标后的共n个字符
dd 删除光标所在行内容,ndd删除连同光标所在的行及光标下面共n行内容
dG 删除光标所在行到末尾的所有内容
D 删除光标所在处到行尾的内容
:n1,n2d 删除指定范围的行
复制和剪切命令:
yy、Y 复制当前行
nyy、nY 复制包括当前行在内的以下共n行
dd 剪切当前行
ndd 剪切包括当前行在内的以下共n行
p、P 粘贴在当前光标所在行下、行上
注意:使用删除命令所删除的内容均可用p或P来进行粘贴,但是粘贴位置有所不同。其中,D、x、nx命令删除的内容在粘贴时,p粘贴在光标后,P粘贴在光标前;而dd、ndd、dG、:n1,n2d命令删除的内容在粘贴时,p粘贴在光标所在行的下一行,P粘贴在光标所在行的上一行。
替换和取消命令:
r 替换光标所在处字符
R 从光标所在处开始替换字符,按ESC结束
u 取消上一步操作
搜索和替换命令:
/string 向前搜索指定字符串(搜索时想忽略大小写:set ic关闭忽略大小写:set noic)
n 上搜索指定字符串的下一个出现位置(N 上一个出现位置)
:%s/old/new/g 全文替换指定字符串
:n1,n2s/old/new/g 在一定范围内替换指定字符串(可用c代替g,区别就是c会提示是否替换)
保存退出命令:
:wq 、ZZ 保存并退出
:wq! 强行保存退出(只有文件的所有者或者root才可以这样)
:q! 强行不保存退出(只有文件的所有者或者root才可以这样)
:w 保存不退出
:w 新文件名 另存为功能(:w 目录/新文件名 另存在指定目录下)
块选择命令:
v 字符选择,会将光标经过的地方反白选择
V 行选择,会将光标经过的行反白选择
Ctrl+v 块选择,可以用长方形的方式反白选择数据
y 将反白的地方复制起来
d 将反白的地方删除
其它技巧命令:
:r 文件名 导入某文件内容导入到当前文件中
:!命令 在Vi中执行命令(按回车退出)
:r!命令 导入命令的执行结果到当前文件中
:map 快捷键 触发命令 定义快捷键
范例 :map ^P I#^[ (^P :ctrl+v ctrl+p 或ctrl+v+p ^[: ctrl+v+ESC键)光标移到行首插入#后退出(启用ESC键)到命令模式
:map ^B 0x 光标移到行首删除行首字母
:map ^E ithis is a test! 定义ctrl+e插入i后面的内容(注意:并没有退回到命令模式)
:unmap 快捷键 取消快捷键定义
:n1,n2s/^/#/g 连续行注释(^表示行首)
:n1,n2s/^#//g 连续行取消注释(^表示行首)
:n1,n2s/#//g 去掉连续行内所有井号
:n1,n2s/^/\/\//g 连续行用//注释(^表示行首,使用了转义符)
:ab 内容1 内容2 替换(将输入的内容1变成内容2)
:unab 内容1 取消替换
关于Vim配置:
~ 宿主目录 (homedirectory 宿主目录可以指定,但默认root的宿主目录是/root 普通用户的宿主目录是/home/用户名)
Vi 的配置文件存放在用户的宿主目录下 ~/.vimrc
用户只有将定义的快捷键等对vi的配置写在配置文件中,才能每次都使用,否则,每次对vi的设置是不保存的。
Vim与vi比较:
Vim与vi相比,vim具有颜色显示的功能,且支持许多程序语法(C语言等),可以进行C语言等程序编辑。当使用vim编辑程序时,vim可直接检查程序的语法错误。
另外,vim可以进行多文件编辑:
vim file1 file2
:files 列出当前使用vim打开的文件
:n 编辑下一个文件
:N 编辑上一个文件
Vim的多文件编辑可以实现将一个文件中的某些内容复制、剪切到另一个文件中。
Vim还可以进行多窗口编辑:
在一般的窗口界面下的编辑软件都会有“切割窗口或冻结窗口”的功能,vim也有这样的功能。
:sp 将当前文件在两个窗口里显示
:sp filename1 在当前窗口里切割出一个窗口显示filename1文件
Ctrl+w+j、Ctrl+w+方向上键
Ctrl+w+k、Ctrl+w+方向下键 在各个窗口之间切换光标
Vim会主动将你曾经做过的行为记录下来,记录操作的文件是~/.viminfo
(.viminfo是自动产生的,用户在vim里所做的操作可以在这个文件内部查询到)
DOS 与Linux断行字符的转换:
dos2UNIX [-kn] file [newfile] -k(不更新文件上次内容经过修订的时间)
UNIX 2dos [-kn] file [newfile] -n(保留原本的旧文件,转换后并保存到新文件)
在DOS和Linux的文本编辑模式和下,断行字符是不同的。DOS中使用的断行字符是^M$(我们成为CR LF两个符号),Linux中仅有$(LF)这个断行符号。
文件语系编码的转换:
iconv --list 列出iconv支持的语系数据
iconv –f 原本编码 –t 新编码 filename[-o newfile]
-f from
-t to
-o file 若要保留原来的文件,使用该选项可建立新编码文件