Linux--vim

一、vim的基础介绍

vim是一个老式的文字处理工具,但是功能很齐全,不仅是文本处理工具,还是一个程序编辑工具,包含了很多额外的功能

为什么Linux使用vim?

①所有类Unix系统都内置vi,而vim相当于是vi的升级版

②很多软件的编辑界面都会调用vi,比如crontabedquota

③vim具有程序编辑能力,可以用颜色表示语法

vim常用的有3~5种模式,分别为:命令模式、插入模式、底行模式、视图模式、替换模式
各个模式之间的切换键

注意:

如果不清楚当前处于什么模式,则无脑esc直至退回命令模式

退出vim编译一般是先保存后退出

vim中操作,不要使用鼠标和滚轮

二、vim指令集

vim中的绝大多数指令都是在命令模式下进行,为了便于vim操作设计了很多快捷指令

|-----------|-------------------------|
| 按键操作 | 功能说明 |
| yy/nyy | 复制当前行,或包括当前行在内的n行 |
| dd/ndd | 剪切当前行,或包括当前行在内的n行 |
| p/np | 粘贴一行,或n行相同的内容在当前光标所在处 |
| u | 撤销上一步操作 |
| ctrl r | 对撤销操作进行撤销(即撤销u操作) |
| shift g | 将光标定位到文档的最结尾 |
| n shift g | 将光标定位到文档的第n行 |
| shift 4 | 将光标定位到当前行的结尾 |
| shift 6 | 将光标定位到文档的最开始 |
| shift ~ | 快速对文本内容进行大小写切换,与Caps键不同 |
| n r | 替换光标当前所在位置的字符 |
| nx | 行内删除,从左向右删 |
| n shift x | 行内删除,从右向左删 |
[### vim命令模式常用操作]

注意:

u和ctrl+r可以相互撤回

shift ~是对文本直接进行大小写替换,而不是切换输入法的大小写

|-----------------|----------------|
| 按键操作 | 功能说明 |
| set nu/set nonu | 显示行号/不显示行号 |
| %s/被替换内容/替换内容/g | 将文件内容中的被替换内容替换 |
| /key | 搜索并高亮key内容 |
| !command | 强制执行command命令 |
| vs file | 新生成一个file文件 |
[### 底行模式常用操作]

注意:

ctrl w w用于光标在多个页面之间切换

替换操作会导致所有的内容都被替换,需要谨慎使用

三、vim的配置

vim配置可以手动也可以自动。一般情况下不推荐自动配置vim

vim在启动的时候,会自动在当前用户的目录下,寻找配置文件。如果没有就是默认

一个用户对应一个vim配置,并不会影响其他用户

可以手动创建一个vimsrc文件,这个文件就是vim自动寻找的配置文件

复制代码
##常用配置

set ai                    自动缩进,与上一行保持一致的自动空格
set ic                    在查询模型与匹配模式下忽略大小写
set number                左侧显示行号
set showmatch             显示括号配对,并高亮显示相匹配的括号
set showmode              文本输入模型下,加亮显示模式指示器
set showcmd               在状态栏显示所执行的指令,未完成的指令片段
set warn                  长行显示自动折行
set cindent               以C/C++模式缩进
set ruler                 打开状态栏标尺
set scrolloff=6           设置光标离窗口上下6行时窗口自动滚动
set tabstop=4             设置Tab长度为4
set wrap                  自动换行显示
syntax enable
syntax on                 自动语法高亮

一般不推荐手动配置。而是使用他人已经配置完成的自动配置

相关推荐
宁zz8 小时前
乌班图安装jenkins
运维·jenkins
大丈夫立于天地间9 小时前
ISIS协议中的数据库同步
运维·网络·信息与通信
cg50179 小时前
Spring Boot 的配置文件
java·linux·spring boot
暮云星影9 小时前
三、FFmpeg学习笔记
linux·ffmpeg
rainFFrain9 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
GalaxyPokemon9 小时前
Muduo网络库实现 [九] - EventLoopThread模块
linux·服务器·c++
mingqian_chu10 小时前
ubuntu中使用安卓模拟器
android·linux·ubuntu
@郭小茶11 小时前
docker-compose方式部署docker项目
运维·docker·容器
GalaxyPokemon11 小时前
Muduo网络库实现 [十] - EventLoopThreadPool模块
linux·服务器·网络·c++