nano、Vi和Vim是什么?
- nano是一个字符终端的文本编辑器
- vi 是大多数linux系统自带的文字编辑器
- 而 vim 则是 vi 进阶版,可用不同颜色显示文字内容,也可进行各种程序的编写
nano
输入nano 1.txt,可看到
- 最顶部是nano版本、文件夹名字、正在修改
- 中间游标是输入部分
- 底部表示是新文件,^G表示是Ctrl+G获取帮助

编译过后按下Ctrl+X退出会提示是否保存文件

N则直接退出,Y则进一步选择文件类型(M代表Alt键),若直接保存则按下enter键

vi的使用
一般命令模式
用 vi 命令打开文件即进入一般命令模式
移动光标
按键 | 功能(移动光标) |
---|
hjkl | ⬅⬇⬆➡ (30⬇表示向下移动30行) |
Crtl + f / b | Page Down / Page Up (向下/上翻一页) |
Crtl + d / u | 向下/上翻半页 |
+ - | ⬇⬆ |
space | 向右移动一列(30space表示向右移动30列) |
0 / $ | Home / End(移动到列头/尾) |
H / M / L | 移动到当前屏幕 第一行/中间一行/最后一行 的第一列 |
G / gg | 移动到 最后一行/第一行 的第一列(20G表示移动到第20行) |
enter | ⬇ (20enter表示向下移动20行) |
搜索
按键 | 功能(搜索) |
---|
/word | 向下搜索word |
?word | 向上搜索word |
n | 执行前一个搜索动作,若是 / 则向下,? 则向上 |
N | 反向执行前一个搜索动作,若是 / 则向上,? 则向下 |
替换
按键 | 功能(替换) |
---|
:row1,row2s/word1/word2/g | 将row1-row2行的字符串word1替换成word2 |
:1,$s/word1/word2/g | 从第一行到最后一行的字符串word1替换成word2 |
:1,$s/word1/word2/gc | 同上,替换前提示 |
删除
按键 | 功能(删除) |
---|
x / X | del / backspace (删除后面/前面字符,10x表示向后删除10个) |
dd | 删除光标所在行(20dd表示向下删除20行) |
d1G / dG | 删除光标所在行及往上/往下的行 |
d$ / d0 | 删除光标所在列及后面/前面的列 |
复制黏贴
按键 | 功能(复制与黏贴) |
---|
yy | 复制当前行(20yy表示复制20行) |
y1G / yG | 复制当前行及往上/往下的行 |
d1G / dG | 复制光标所在行及往上/往下的行 |
y$ / y0 | 复制光标所列及后面/前面的列 |
p / P | 将复制的内容黏贴到下/上一行 |
其他
按键 | 功能(其他) |
---|
J | 合并光标所在行及下一行 |
u / Ctrl+r | 撤销/重做 |
. | 重复前一个指令 |
编辑模式
在一般指令模式中通过如下按键进入编辑模式,编辑完后通过esc退出
按键 | 功能(编辑) |
---|
i / I | i从当前光标处插入,I从当前行的第一个非空白字符处插入 |
a / A | a从当前光标的下一个字符插入,A从最后一个字符插入 |
o / O | 往下/上增加一行并插入 |
r / R | r下一次输入替代当前光标所在字符(只生效一次),R则是连续替代 |
指令列命令模式
在一般命令模式中通过如下按键,可让游标到最底下进行存储文件等操作
按键 | 功能(存储与离开) |
---|
:w / :w! | 保存/强制保存修改 |
:q / :q! | 退出/强制退出 |
:wq / :wq! | 保存/强制保存后退出 |
:w filename | 另存为filename |
:r filename | 将filename的内容追加到当前文件 |
:row1,row2 w filename | 将row1-row2的内容另存到filename |
:!command | 暂时离开vi执行commond命令(:!ls表示查看当前文件) |
:set nu / :set nonu | 显示/取消行号 |
文件恢复
当在编辑文件时,会生成.filename.swp临时文件记录操作,正常编辑完后该文件会消失,若出现意外中断,则该文件可用于恢复丢失的操作,如下在vi 2.txt时关掉终端,生成swp临时文件

再次编辑2.txt,会提示(1)当前可能多个用户在操作(2)上次编辑意外中断

- Open Read-Only:只读打开,用户只看不改则不会出现问题
- Edit anyway:无论无何都要编辑,可能会发生并发修改
- Recover:利用swp文件修复,修复完后需手动删除swp文件(不删除仍会进入这个页面)
- Delete it:不修复,直接删除swp文件
- Quit:退出
- Abort:终止
vim额外功能
区块选择
相当于windows中的选中
按键 | 功能(区块选择) |
---|
v / V | 每次选择一字符 / 行 |
Ctrl + v | 自定义选择 |
y | 复制选中的内容 |
d | 删除选中的内容 |
p | 黏贴选中的内容 |
如下Ctrl + v 选中每行的1-5列 | |
 | |
通过y和p将hello复制到末尾 | |
 | |
多文件编辑
按键 | 功能(多文件编辑) |
---|
:n / N | 编辑下/上一个文件 |
:files | 列出当前开启的文件 |
如下通过 vi 1.txt 2.txt 开启两个文件,即可实现跨文件操作 | |
 | |
多窗口编辑
按键 | 功能(多窗口编辑) |
---|
:sp filename | 若有filename则打开另一个文件,否则分割当前文件 |
Ctrl+w+j / [ctrl]+w+⬇ | 光标移动到下面窗口 |
Ctrl+w+k / [ctrl]+w+⬆ | 光标移动到上面窗口 |
Ctrl+w+q | 退出当前窗口,也可使用:q |
如下,上面为2.txt,下面为1.txt | |
 | |
文字补全
按键 | 功能(文字补全) |
---|
ctrl+x ctrl+n | 以当前文件内容为关键字,提示补全 |
ctrl+x ctrl+f | 以当前文件名为关键字,提示补全 |
ctrl+x ctrl+o | 以当前文件副文件名为关键字,提示补全 |
如下 vi test.html,输入h,按下ctrl+x和ctrl+o,会根据副文件名html给出提示补全

环境配置
用户的每次操作都会记录到 ~/.viminfo 文件中,以便下次操作,而vim的配置如下
按键 | 功能(环境配置) |
---|
:set nu / nonu | 设置/取消行号 |
:set hlsearch / nohlsearch | 设置/取消搜索高亮 |
:set autoindent / noautoindent | 设置/取消自动缩进 |
:set backup | 自动备份文件,当修改文件时,原文件会另存为filename~的文件 |
:set ruler | 显示右下角阅读进度 |
:set showmode | 显示左下角文件状态 |
:set backspace=(012) | 为2时backspace可删除任意值,为0或1时只能删除刚刚输入的字符 |
:set all | 显示当前环境配置 |
:set | 显示变更过的配置 |
:syntax on / off | 打开/关闭语法提示 |
:set bg=dark / light | 设置深/浅色调 |
为避免每次都要设置参数,可在vim配置文件中指定配置,其在/etc/vimrc,不过它是总配置文件,建议用户可在 ~/.vimrc 下面创建自定义配置文件

如上,在 ~/.vimrc 添加 set nu,以后每次打开vim都会显示行号