1. 缓冲区

文件和缓冲区的区别

vim 打开一个文件时,其实是从磁盘中读取文件到内存中,vim的一些操作其实是在操作缓冲区,

当使用vim的保存命令时,vim才将缓冲区写回给文件。

操作缓冲区

命令 用途
:bprev 跳转到前一个buffer
:bnext 跳转到后一个buffer
:bfirst 跳转到第一个buffer
:blast 跳转到最后一个buffer
:w 将当前buffer写入文件
:e 重新将文件内容加载到缓冲区(回滚buffer修改)
:qa! 关闭所有buffer,且不保存
:wa! 保存所有buffer

2. 窗口

在Vim 术语中,窗口是缓冲区的显示区域。既可以打开多个窗口,在这些窗口中显示同一个缓冲区,

也可以在每个窗口里载入不同的缓冲区。Vim 的窗口管理系统很灵活,可以根据工作的需要来调整

工作区。

操作窗口

命令 用途
s 水平切分当前窗口,新窗口仍显示当前缓冲区
v 水平切分当前窗口,新窗口仍显示当前缓冲区
sp 水平切分当前窗口,新窗口仍显示当前缓冲区
vsp 水平切分当前窗口,新窗口仍显示当前缓冲区
w 在窗口间循环切换
h 切换到左边的窗口
j 切换到下边的窗口
k 切换到上边的窗口
l 切换到右边的窗口
c 关闭活动窗口
o 只保留活动窗口,关闭其他所有窗口

3. 标签页

Vim 的标签页接口和其他许多文本编辑器不同,在Vim中,可以用标签页把窗口组织到一系列工作区中。

典型文本编辑器的图形界面(GUI)有一个用于编辑文件的主工作区,还有一个显示当前工程目录树的侧边栏。

如果点击侧边栏中的文件,它会在主工作区为所选中的文件打开一个新标签页。每个打开的文件都会创建一个新

标签页。在此模型中,可以说标签页代表了当前打开的文件。

Vim 的标签页与缓冲区并非一一对应的关系,相反,应该把标签页想成容纳一系列窗口的容器。每个标签页都可

包含一个或多个窗口。

操作标签页

命令 用途
:tabe[dit] {filename} 在新标签页中打开 {filename}
:tabc[lose] 关闭当前标签页及其中的所有窗口
:tabo[nly] {filename} 只保留活动标签页,关闭所有其他标签页
:tabn[ext] {N} 切换到编号为 {N} 的标签页
:tabn[ext] 切换到下一标签页
:tabp[revious] 切换到上一标签页

4. 设置一下热键

~/.vimrc 配置一些热键

" 窗口快捷方式
map <s-h> <c-w>h
map <s-l> <c-w>l
map <s-j> <c-w>j
map <s-k> <c-w>k
map <s-w> <c-w>w
map <s-c> <c-w>c
map <s-o> <c-w>o " buffer 快捷方式
nnoremap <Leader>bn :bn<CR>
nnoremap <Leader>bb :bp<CR>
nnoremap <Leader>bf :bfirst<CR>
nnoremap <Leader>bl :blast<CR>
nnoremap <Leader>bc :bwipe<CR> " 标签页快捷方式
nnoremap <Leader>tp :tabp<CR>
nnoremap <Leader>tn :tabn<CR>
nnoremap <Leader>tc :tabc<CR>
nnoremap <Leader>to :tabo<CR>
nnoremap <Leader>tN :tabn
nnoremap <Leader>te :tabe

4. VIM 系列 - 认识VIM的缓冲区、窗口、标签页的更多相关文章

  1. Vim技能修炼教程(9) - 缓冲区和标签页

    缓冲区 上一节我们学习了窗口相关的命令,其实多窗口的最大功能在于存放多个不同的缓冲区. 文件载入内存之后,我们操作的其实是缓冲区.:write命令就是将缓冲区写回文件的目的. 查看内存中的缓冲区 通过 ...

  2. 8. VIM 系列 - 利用 VIM 8.1 版本编译项目和GDB调试

    目录 term 模式 termdebug 模式 VIM版本安装请参考: 0. VIM 系列 - 源码升级最新版本vim term 模式 输入:term 打开此模式,效果如下 这个模式有编辑文本窗口和s ...

  3. 20141112 WinForm子窗口标签页

    (一)标签页 先看看效果: 代码: public partial class 标签页 : Form { string s = ""; public 标签页() { Initiali ...

  4. Google 浏览器设置打开超链接到新窗口标签页

    一.windows  按住Ctrl + 鼠标点击,在新窗口打开,停留在当前页面: 按住Ctrl + Shift + 鼠标点击,在新窗口打开,停留在新窗口: 登录Google账号,管理Google账号, ...

  5. 2. VIM 系列 - 初探vim配置文件

    目录 配置文件 .vimrc 基本配置 tab 键设置 热键配置 配置文件 刚安装vim默认配置,功能是很简单的,vim的功能很多是需要配置开启的. .vimrc 使用vim打开配置文件~/.vimr ...

  6. 【vim】分割窗口、标签页与Quickfix窗口

    vim支持窗口分割和标签页,合适地使用这两种特性可以使文字编辑工作更愉快. 1. 窗口分割 vim支持窗口的水平分割和垂直分割.以下是常用的操作指令或快捷键. 命令 说明 vim -o <fil ...

  7. (四)、vim的缓冲区、标签、窗口操作

    1.缓冲区的基本操作 a.文件与缓冲区的区别 vim file1   打开一个文件时,其实是从磁盘中读取文件到内存中,文件的内容会被加载到缓冲区中, 这个缓冲区在一个窗口上显示,所以他是一个已激活的缓 ...

  8. 【CNMP系列】VIM编辑器详解

    缘起 大学的时候做过Linux内核驱动程序研发,之前写C语言就是用的Vim编辑器,当年的Vim还不如今天之强大,当时的插件也没有现在这么多,只是觉得这个编辑器能满足我想要的所有,查看Linux内核代码 ...

  9. 5. VIM 系列 - 文件管理

    目录 目录树 文件检索 ctrlp.vim fzf.vim 目录树 安装 nerdtree.vim 插件 Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeTo ...

随机推荐

  1. 超实用的JavaScript代码段 Item1 --倒计时效果

    现今团购网.电商网.门户网等,常使用时间记录重要的时刻,如时间显示.倒计时差.限时抢购等,本文分析不同倒计时效果的计算思路及方法,掌握日期对象Date,获取时间的方法,计算时差的方法,实现不同的倒时计 ...

  2. MD5加密算法(java及js)

    为了防止用户登陆过程中信息被拦截导致信息泄露,我们应该在客户端就对用户密码进行加密.浏览器提交给服务器的是加密后的信息,即使被恶意拦截,被拦截信息也已做了加密处理,现在比较安全的一种加密算法是MD5加 ...

  3. 使用jekyll和Github搭建个人博客

    一.使用jekyll和Github三步搭建个人博客 在 Github 上建一个库,库的名字是xxx.github.com,其中的xxx是你的github的账号名(图中标注的不要勾选) 注:如果没有Gi ...

  4. java 中 一个int类型的num,num&1

    n&1 把n与1按位与,因为1除了最低位,其他位都为0,所以按位与结果取决于n最后一位,如果n最后一位是1,则结果为1.反之结果为0.(n&1)==1: 判断n最后一位是不是1(可能用 ...

  5. Elasticsearch笔记六之中文分词器及自定义分词器

    中文分词器 在lunix下执行下列命令,可以看到本来应该按照中文"北京大学"来查询结果es将其分拆为"北","京","大" ...

  6. nsq源码阅读笔记之nsqd(二)——Topic

    与Topic相关的代码主要位于nsqd/nsqd.go, nsqd/topic.go中. Topic的获取 Topic通过GetTopic函数获取 GetTopic函数用于获取topic对象,首先先尝 ...

  7. Laravel分页带参数的实现方法

    控制器: $data['type'] = 5;$data['member_list'] = Member::orderBy('id', 'desc')->paginate(10);return ...

  8. Python中的turtle初探

    turtle Python自带了一个turtle库,就像名字turtle说的那样,你可以创建一个turtle,然后这个turtle可以前进,后退,左转,这个turtle有一条尾巴,能够放下和抬起,当尾 ...

  9. Centos 7 Linux系统修改网卡名称为ethx

    一.Centos7 系统安装完成后更改网卡名称方法 1.查看Centos7系统默认的网卡配置(eno16777736) [root@server ~]# ifconfig eno16777736: f ...

  10. 小程序 textarea、input 层级过高,导致填写内容穿透,z-index无效问题解决方案。

    小程序的textare.input输入框层级是最高的 那么我们在textare.input输入的内容就会总是显示在最上一层. 这是时为什么呢?官方文档有说明,因为textare.input这些是原生组 ...