VIM(Neovim)基本概念与高效使用方法
操作符和动作
- Vim两个基本概念:操作符
operator
和动作motion
。operator
看作动词,motion
看做名词。 - 操作符是用于对文本内容进行操作的命令,比如修改c、删除d、y复制到寄存器、~交换大小写、g~反转大小写、>增加(右)缩进、<减小(左)缩进、=自动缩进、zf定义折叠、gu转为小写、gU转为大写等。
# 查看操作符 :h operator
- 动作是指移动光标的命令等。比如h、j、k、l、/、w、b、e、^、0、$、%、s等。用来限定范围。
动作 = 移动光标的命令 或 动作 = [数字] + 移动光标的命令 # 数字表示移动次数,默认为1
# 查看motion帮助文档 :h motion.txt :h motion
operator
和motion
结合实现Vim操作的语法如下[数字] + 操作符 + [数字] + 动作 # 第1个数字表示执行(操作符 + [数字] + 动作)的次数,默认为1;第2个数字表示执行动作的次数,默认为1 # 比如2d2w表示执行2次d2w,d2w表示删除2个词(包括词后面的空格)
此时,operator表示要执行的操作(比如删除d,修改c,复制y等),motion表示该operator能操作的范围(比如2w表示能对2个单词执行该操作)。简而言之,操作符用来告诉Vim我要做什么操作,动作用来告诉Vim我要操作的具体范围(对哪部分文本进行操作)。
- 以行为单位的操作的语法
[数字] + 操作符 + [数字] + 操作符 # 前后两个操作符一样。 # 第一个数字表示执行"操作符 + 数字 + 操作符"的次数,默认为1。 # 第二个数字为从当前行开始,向下操作的行数(包括当前行),默认为1
行操作时,用数字来控制该操作符能操作的范围。
y2y复制2行,d3d删除3行,2c3c删除6行并进入插入模式(等价于c6c),>5>右缩进5行等。使用行操作有时候可以在不使用行可视行模式的情况下,对多行进行批量操作。
- 总结操作符和动作语法公式
动词 + 名词
动词用来表示具体执行什么操作(比如删除,修改,复制等),名词用来限制该动词操作的范围。
# operator为动词,motion为名词 公式一: [数字] + operator + [数字] + motion 公式二: [数字] + operator + [数字] + operator
- 操作符(operator)结合文本对象(text-object)公式
# operator为动词,text-object为名词 [数字] + operator + [数字] + text-object
核心:只要掌握了operator、motion和text-objects,就可以使用不同的operator和不同的motion或text-object进行组合使用,从而实现无尽的操作。
buffers和windows以及tabs
A buffer is the in-memory text of a file.
A window is a viewport on a buffer.
A tab page is a collection of windows.
buffers
- buffer(缓冲区):即为内存中的一块空间,用vim打开一个文件时,该文件的数据就与一个buffer绑定,用户在buffer中编辑文本。
- 命令模式下,查看当前缓冲区具体有哪些文件
:buffers :ls :files
- 不同buffer之前切换
:bnext # 切换到下一个buffer :bprevious # 切换到上一个buffer :buffer + n # n是buffer编号 :buffer + 文件名 # 切换到指定文件名的buffer :bdelete + 文件名/buffer编号 # 删除
ctrl-^ # 跳到先前编辑过的buffer
- 退出buffer/关闭vim
:xall # 保存并退出所有的buffer :wall # 保存所有buffer :wqall # 保存所有buffer并退出 :qall # 关闭所有buffer,但是不报存变更
windows
- window(窗口):一个窗口是在buffer上面的一个视口,一个buffer可以对应多个窗口。查看文档
:h window
- 命令模式下划分窗口
:sp # 水平分割 :vs # 垂直分割 :new # 创建新文件并打开
更多窗口内容请参考下文中多窗口编辑.
tabs
- tabs(选项卡):是窗口的集合,可将多个窗口收集(放在)一个tab中,从而在不同的tab中实现不同的窗口布局。在Vim中,打开tab不表示打开了一个文件;同样关闭tab也不代表关闭一个文件。文件的数据依然存储在内存的buffers中。
- 命令模式下窗口命令
:tabs # 查看tab数 :tabnew # 新建tab :tabclose # 关闭当前tab :tabnext # 切换至下一个tab :tabprevious # 切换至上一个tab :tablast # 切换到最后一个tab :tabfirst # 切换到第一个tab
- 普通模式下窗口命令
gt # 切换到下一个tab gT # 切换到上一个tab n + gt # 切换到编号n的窗口
- 终端命令行启动时创建多个窗口选项
-p
。 - tab的优点:将不同的窗口放到不同tab中,可以在不同的tab里面使用不同的窗口布局。比如第一个tab包含2个垂直窗口,第2个tab中为水平或垂直混合窗口布局。
模式切换技巧
Esc # 其他模式切换到普通模式
Ctrl+[ # 其他模式切换到普通模式
gi # 从其他模式快速跳转到最后一次编辑的地方并进入插入模式
- 插入模式下jk映射为esc,按下jk会从插入模式退回普通模式
# 在配置文件vimrc文件里面添加
inoremap jk <esc>
打开文件光标快速跳转到上一次编辑的位置:打开文件,之后按下gi
VIM(Neovim)基本概念与高效使用方法相关推荐
- Paillier半同态加密:原理、高效实现方法和应用
简介: <数据安全法>已于9月1日起正式实施,两个月后<个人信息保护法>也将开始施行,意味着数据安全和隐私保护方面的监管将会在年内陆续到位.在合规收紧大背景下,"数据 ...
- 基于qtc++设计文本编辑器的代码_文本编辑器Vim/Neovim被曝任意代码执行漏洞,Notepad:兄弟等你好久了...
犹记前些日子,微软的记事本文本编辑器爆出了本地代码执行漏洞. Google Project Zero研究员Tavis Ormandy宣布在微软的记事本文本编辑器中发现代码执行漏洞. 可以看见,他在no ...
- 用vim写php,Vim/Neovim中配置PHP的代码调试
使用了一段时间的Neovim(Vim的一个变种)之后,发现再也离不开了,目前已经把Neovim作为主力开发工具了.刚也把PHP的调试功能给配置上了,这里记录一下在Neovim中配置PHP调试的整个过程 ...
- Paillier 半同态加密:原理、高效实现方法和应用
一 简介 1 背景 <数据安全法>已于9月1日起正式实施,两个月后<个人信息保护法>也将开始施行,意味着数据安全和隐私保护方面的监管将会在年内陆续到位. 在合规收紧大背景下,& ...
- 干货!基于非递减分位数网络的值分布强化学习及其高效探索方法
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 尽管值分布强化学习在过去几年中得到了广泛的研究,但仍然存在两方面未能解决问题:一是如何保证估计出来的分位数函数的有效性,二是如何有效地利 ...
- 文本编辑器Vim/Neovim被曝任意代码执行漏洞,Notepad:兄弟等你好久了
犹记前些日子,微软的记事本文本编辑器爆出了本地代码执行漏洞. Google Project Zero研究员Tavis Ormandy宣布在微软的记事本文本编辑器中发现代码执行漏洞. 可以看见,他在no ...
- 如何阅读英文文献,有哪些高效的方法或者辅助工具?
[每日一问]如何阅读英文文献,有哪些高效的方法或者辅助工具? Datawhale优秀回答者:追风者 方法 先是通读文献综述(理解专业术语和基本概念),起初时应以泛读为主:再研读自己研究领域的经典论文5 ...
- 小样本学习——概念、原理与方法简介(Few-shot learning)
Few-shot learning (FSL) 在机器学习领域具有重大意义和挑战性,是否拥有从少量样本中学习和概括的能力,是将人工智能和人类智能进行区分的明显分界点,因为人类可以仅通过一个或几个示例就 ...
- 【编译原理】期末 龙书概念梳理+做题方法(混子保过指南+学霸提分秘籍)
编译原理期末总结 龙书概念梳理+做题方法 目录 编译原理期末总结 龙书概念梳理+做题方法 编译概述 1 编译过程 2 编译&解释 3 GCC的处理过程 词法分析 1 词法分析的任务 2 词法分 ...
最新文章
- 关于谷歌地图坐标与百度地图坐标的事
- apache kafka系列之server.properties配置文件参数说明
- 《货币战争》的一点感想
- html表格编辑器退出编辑状态,易优后台编辑器取消html标签(比如表格属性等)过滤解决方法...
- 清华大数据,365天我们持续在发声——数据院四周年系列报道之传播篇
- 经典网页设计:25个优秀的个人网站设计欣赏
- 传奇私服架设微端搭建教程
- 【火星传媒深度】Coinbase:加密世界的“谷歌”
- 基于FPGA的SPI-Flash控制器的Verilog设计和验证
- 爬虫三:用xpath爬取链家网二手房信息
- 未来计算机畅想英语作文,畅想未来的生活life in the future
- Powerdesigner将数据表的Name变中文,字段全部变大写
- 外媒眼中的乔布斯:他就是苹果
- echarts折线图曲线,每个值上面添加小圆点或者小圆圈
- 公司来了个新测试开发,一副毛头小子的样儿,哪想到......
- ios tableView那些事 (九) tableview的删除
- 揭露强奸犯的黑客被判有罪?审视CFAA计算机欺诈法
- 分布式系统原理介绍_分布式系统的全面介绍
- 结构体运算符与取余_c语言取余(c语言去整和取余)
- Java计算机毕业设计电影票网上订票系统源码+系统+数据库+lw文档