Linux命令行最常用文本编辑工具 vi / vim

为什么需要一款命令行文本编辑工具

我们很容易有这个需求,就是在终端模式(命令行模式)下编辑文本,最常用的工具是vi,这个命令几乎所有的Linux系统都有,很多时候也是系统默认的文本编辑器,比如书写定时任务的时候CentOS系统默认会调用vi来编辑,它有一个大表哥vim就是vi的升级版,支持更多功能,颜色高亮等(也看自己是否需要,我有时候就不喜欢彩色高亮这些花里胡哨的东西,简简单单编辑个文本就足够)

要说对工作有直接影响的vi和vim的区别,就是当我们复制粘贴文本的时候,尽可能使用vi编辑器,vim有时会”智能”的对所粘贴的文本进行格式化,比如缩进一下,多增加了几行注释什么的,这都不是我们想要的,我们需要的是原封不动的把内容粘贴进去,此时就用简单的vi编辑器就好

vi OR vim 的学习成本比较高,不过作为专业的运维工程师,学习vi是必要的,因为实际工作中老大随手给你一个服务器的IP地址,你随手打开终端连上远程机器就开始操作了,此时你不会有心思和时间去安装和配置合适的编辑器,而是直接使用vi编辑器开鲁

不建议大家走极端,vi 命令肯定需要学习,但是学到什么程度,因人而异

vi 基础

vi file.txt
vim file.txt

i 插入模式
o 下一行插入

ESC :q   退出
ESC :wq  保存并退出
ESC :q!  强制退出不保存已修改的文件
:set nu  查看行号
:set nonu  取消显示行号

G OR shift+g 光标移动到文件最后一行
0  行首
$  行尾
1gg  2gg 9gg   移动到第1行 第2行 第9行,依次类推

/hello   搜索hello字符串
/hello\c 不区分大小写搜索
n 向下搜索
N 向上搜索


yy 复制光标所在当前行
p  将已经复制的内容粘贴到光标所在的下一行
dd 删除光标所在的行
u  撤销上一步操作

gg  --> dG   清空文本
d$ 光标到行尾删除

SHIFT+V   选择多行,配合d删除之
CTRL+V    垂直选择多行,配合d,删除之

第1行到第3 ,复制到第19行的下面。
:1,3 copy 19

显示空格和TAB键
:set list   显示空格和TAB键
:set nolist 取消显示空格和TAB键
如下图所示,$表示行结尾,^I表示TAB键。

配置文件

vim基本配置
在linux下编辑shell脚本,需要使用功能强大的vim编辑器,本章介绍下vim的常见优化。
vim的配置文件
~/.vimrc	当前用户的vim配置文件
/etc/vimrc	系统全局vim配置文件
~/.viminfo	用户使用vim的操作历史
/usr/share/vim/vim74/colors	配色模板文件存放路径
~/.vimrc常用配置
[root@as4k ~]# cat ~/.vimrc

set tabstop=4
set shiftwidth=4
set expandtab       " 使用空格替换TAB

set nocompatible   " 关闭兼容模式(无需兼容vi)
set showcmd         " 输入的命令显示出来,看的清楚些
备用
set softtabstop=4  " 按空格键一次删除4个空格
set mouse=a        " 开启鼠标支持
set autoindent      " 自动缩进,开启此项会导致,从windows复制到xshell中的文本,缩进异常
参考资料
https://blog.csdn.net/zytbft/article/details/74551299
https://www.zhihu.com/question/19989337
生效
退出SSH客户端重新连接之后,vim配置文件方能失效。
提示
~/.vimrc可能不存在,新建一个就好。
~/.vimrc配置文件的最后,最好放一行注释,否则可能会执行报错。

vim无故卡死,无论如何都动不了了?

如下方案,都可尝试。 1. 切换到纯英文输入法

  1. 多按几次ESC
  2. CTRL+C
  3. CTRL+Q

vim在插入模式粘贴代码缩进问题解决方法

https://www.cnblogs.com/dj0325/p/9406207.html

先set paste,然后进入插入模式,粘贴代码。然后编辑代码需要自动缩进时,再设置set nopaste

在这里插入图片描述

更简单的方法是用vi命令

csdn 110940132