当前位置: 首页 > news >正文

vim编辑器

文章目录

  • 一、vim的基本概念
    • 1.vim的理念
    • 2.vim的三种模式
    • 3.文本对象 (text object)
    • 4.动作 (action)
    • 5.组合
    • 6.视图模式
    • 7.最小前缀原则
  • 二、vim基本操作
    • 1.保存、切换编辑模式
      • (1)退出编辑模式 Esc
      • (2)保存文件 :w、退出文件 :q
    • 2.复制、粘贴、删除、撤销
      • (1)复制:yy
      • (2)粘贴 p
      • (3)删除该行 dd
      • (4)撤销与恢复
    • 3.删除 (详细版)
    • 4.查找、替换
      • (1)查找
      • (2)替换
      • (3)查找与替换 (详细版)
    • 5.行号相关
      • (1)显示行号
      • (2)取消显示行号
      • (3)默认显示行号
      • (4)切换到第170行:`:170`
    • 6.光标移动(motion)
    • 7.缩进
    • 8.批量注释
    • 9.常用命令
  • 四、其他
    • 1.僵尸模式
    • 2.窗口与分屏
    • 3.其他

一、vim的基本概念

1.vim的理念

①组合
②简单、快捷

vim被称为“编辑器之神”,双手不需要离开键盘


2.vim的三种模式

vim是多模式编辑器
①普通模式/命令模式 (NORMAL):查看代码,最常待的模式
②编辑模式/插入模式 (INSERT):编辑文本
③视图模式 (VISUAL / V-BLOCK):v 行选,crtl + v 列选

在这里插入图片描述


NORMAL模式命令
①短命令:a,i,A,I,o,O,v, crtl+v
②底部命令:以:开头,以[Enter]结尾, :wq
③其他模式按[Esc]返回NORMAL模式


3.文本对象 (text object)

删除双引号内:ci"“,ca”"
ap (paragraph):整段,以空行为分割

①复制整段:yap
②删除整段:dapcip

在这里插入图片描述

a (all):包括边界
i (inside):不包括边界

在这里插入图片描述


4.动作 (action)

d(delete):删除、剪切
y(yank) 复制
c(change) 删除并进入编辑模式
gcc:注释/取消注释

vim中,删除就是剪切。删除内容会被保存到寄存器,可以通过p粘贴回来。


5.组合

(1)action + motion
dw、d$、d0
cgg:光标删除到文首,并进入插入模式
cw:删除后面的单词,并进入插入模式

(2)n命令:某个命令做n次

(3)action + text object


6.视图模式

选择范围,为了后面复制或删除

①批量注释:ctrl + v ,选择范围,按gc
②全段注释(注意上下有空行):gcap


7.最小前缀原则

最小前缀原则:唯一识别,只写部分前缀即可。或者别名。
:w 就是 :write的缩写,保存(内存写回磁盘)。也可写:wri
:q 就是 :q的缩写,:q!是强制退出
:wq 是 保存并退出



二、vim基本操作

1.保存、切换编辑模式

(1)退出编辑模式 Esc

返回normal模式:Esc


(2)保存文件 :w、退出文件 :q

:w:保存文件
:q:正常退出vim编辑器。如果修改,会询问是否要保存文件,yes/no
:wq:保存并退出
:q!:强制退出,不保存

vim编辑器里
:q 是退出 (quit)
:w 是保存 (write)
:wq 是保存退出
:q! 是不保存,强制退出


2.复制、粘贴、删除、撤销

(1)复制:yy

复制:yy
复制n行 nyy
复制从光标位置到第n行 ynG


(2)粘贴 p

p:向后粘贴
P:向前粘贴


(3)删除该行 dd


(4)撤销与恢复

u (undo):撤销
[crtl] + r (recovery):恢复

多个历史版本,两个栈实现前进后退


3.删除 (详细版)

删除就是剪切

命令功能
dd删除一行
dw删除光标后面一个单词
di(删除()内的内容
di{删除{}里的内容,如整个函数的内容
d$删除到行尾
d^从光标删除到本行的第一个非空白字符
d0删除到行首
dnG从光标所在行删除到第n行
:m,nd删除m到n行
dap删除全段 (剪切)
cip删除全段,并进入编辑模式

4.查找、替换

(1)查找

/关键词
回车
n查找下一个,N查找上一个


(2)替换

替换全文 :%s/原内容/替换内容/g


(3)查找与替换 (详细版)

1.查找
在这里插入图片描述


2.替换
全文替换

:%s/旧文本/新文本/g

在这里插入图片描述


5.行号相关

(1)显示行号

:set nu

(2)取消显示行号

:set nonu

(3)默认显示行号

vim ~/.vimrc    #如果文件不存在,可以直接创建

内容输入:

set number

如此,就不用每次都 :set nu 了


(4)切换到第170行::170


6.光标移动(motion)

命令含义
0跳到行首
$行尾
^本行第一个非空白字符
gg文首
G文末
j
k
h
l
i在光标前面插入
I在行首插入
a在光标后面插入
A在行尾插入
o下面另起一行,在行首插入
O上面另起一行,在行首插入
[n]-上移n行
[n]+下移n行
[n]G移动到第n行
:n移动到第n行
w下一个单词的词首
W下一个词的词首,以空白字符分割
b上一个单词的词首
B上一个词的词首,以空白字符分割
t往后查找,光标置于该字符的前一个字符
T往上查找,光标置于该字符的后一个字符
f向后查找,光标置于该字符
F向前查找,光标置于该字符
x删除光标所处的字符
X删除光标前一个字符
r替换一个字符

7.缩进

向左缩进:shift + < 或 shift + < <
向右缩进:shift + > 或 shift + > >


8.批量注释

1.在10-20行添加 // 注释

:10,20s#^#//#g

2.在10-20行删除 // 注释

:10,20s#^//##g

3.在10-20行添加 # 注释

:10,20s/^/#/g

4.在10-20行删除 # 注释

:10,20s/#//g

9.常用命令

命令功能
shift + %文本对象内跳转,{ 跳到 }
shift + k
2 + shift + k
3 + shift + k
查看光标对应的man手册
查看系统调用
查看库函数
光标所在单词shift *
效果等同 /单词
查找单词
:noh取消高亮
y目标行号G从当前行复制到目标行
d目标行号G从当前行删除到目标行
gg = G全文对齐
gcap注释全段
zf创建折叠 (先v选中)
:m,n fold创建折叠
zo展开折叠
zc关闭折叠的代码块



四、其他

1.僵尸模式

crtl + s :进入僵尸模式
crtl + q :退出僵尸模式


2.窗口与分屏

1.XShell切换窗口
①shift + Tab:下一个窗口
②crtl + Tab:上一个窗口


2.vim多窗口操作技巧
①:e 文件名(带路径) 若文件存在就打开,不存在就创建
②:bd 关闭当前窗口
③:bp 打开上一个窗口 (crtl p)
④:bn 打开下一个窗口 (crtl n)

一个会话里,多个vim标签
①启用多标签::e 文件名
②切换标签:crtl + n\p
③关闭标签::bd


3.多窗口 / 分屏
:sp:水平分屏
:vsp:垂直分屏
:q 退出当前窗口
:only 除了当前窗口,退出其他窗口
:w 保存
在这里插入图片描述


3.其他

1.书写函数时,写括号之前,crtl + ncrtl + p,可选提示的参数


2.配置vim
①配置文件:.vimrc (是一个脚本,rc是running command)
②安装vimplus
③再单独装ycm (you complete me)

rm  -rf ~/.vim/plugged/YouCompleteMe
sudo apt install vim-youcompleteme
vim-addons install youcompleteme

相关文章:

  • Android Compose Activity 页面跳转动画详解
  • 更换 CentOS 7.9 的系统源
  • 智能交响:EtherCAT转Profinet网关开启汽车自动化通信新纪元
  • Linux电源管理(三),CPUIdle 和 ARM的PSCI
  • VFlash的自动化和自定义动作
  • 深入理解Qt状态机的应用
  • C++23 新特性:std::size_t 字面量后缀 Z/z
  • B3634 最大公约数和最小公倍数
  • InfiniBand与RoCEv2负载均衡机制的技术梳理与优化实践
  • AWS中国区服务部署与ICP备案全流程指南:从0到1实现合规上线
  • Python爬虫实战:基于 Scrapy 框架的微博数据爬取研究
  • 给你的 Rust 通用库“插上” WebAssembly 的翅膀
  • 批量给文件创建一个同名的文件夹,并将文件放入对应同名的文件夹
  • 第9篇:Linux程序访问控制FPGA端HEX<二>
  • 常用UI设计工具及平台概览
  • Mac配置Java的环境变量
  • 案例驱动的 IT 团队管理:创新与突破之路:第五章 创新管理:从机制设计到文化养成-5.2 技术决策民主化-5.2.2技术选型的量化评估矩阵
  • 4.15BUUCTF Ez_bypass,HardSQL,AreUSerialz,BabyUpload,CheckIn
  • GitLab-CI集成FTP自动发布
  • docker 启动mysql9认证失败
  • 解锁儿时愿望!潘展乐战胜孙杨,全国冠军赛男子400自夺冠
  • 陈刚:推动良好政治生态和美好自然生态共生共优相得益彰
  • 出走的苏敏阿姨一路走到了戛纳,这块红毯因她而多元
  • 上海国际珠宝时尚功能区未来三年如何建设?六大行动将开展
  • “9+2”复式票,浦东购彩者拿下体彩大乐透1153万头奖
  • 一周文化讲座|“我的生命不过是温柔的疯狂”