1 Introduction

vim相关的文件操作: 文件缓冲区, 缓冲区之上的窗口操作, 以及文件格式, 文件编码.
理解缓冲区的概念, 理清文件编码的设置以及查询.

2 Buffer

帮助文档: help buffers
swap文件: help swap-file

2.1 Introduction

缓冲区是内存中的文本文件. 窗口(切割的一个个窗口)是缓冲区的视窗.
标签页是窗口的集合.

"窗口" 被用来查看缓冲区里的内容。你可以用多个窗口观察同一个缓冲区,也可以用多
个窗口观察不同的缓冲区。
"缓冲区" 是一块内存区域,里面存储着正在编辑的文件。如果没有把缓冲区里的文件存
盘,那么原始文件不会被更改。

正因为是内存中的文件, 所以vim对于大文件的操作性非常不好, 而swp临时交换文件也是基于Swap技术产生的, swp的更新设置等可以见文档说明.

2.2 Command

help buffer-list

2.2.1 Write and Quit

1
2
3
4
5
6
7
保存缓冲格式: write, wall
退出检查格式: quit, qall
退出不检查: qall!
重载文件格式:
edit! " 重新读取文件,删除刚刚所做的更改
edit %<Tab> " 获取当前活动缓冲区文件的完整路径(相对)
edit %:h<Tab> " 仅仅获取当前活动缓冲区的目录路径

2.2.2 List of buffers

1
2
3
4
5
6
7
# 获取当前文件所在的目录: conoremap <expr> %% getcmdtype() == ':' ? expand('%:h'). '/' :'%%'

所有缓冲区: buffers
切换到第 N 个缓冲区: buffer [N], [N]buffer
选择缓冲区某一个文件: buffer filename, b filename
切换到第一个缓冲区: bfirst, brewind
切换到最后一个缓冲区: blast

2.2.3 List of arguments

1
2
3
4
5
6
删除缓存格式:  bdelete begin-n,end-num

所有参数列表: args
编辑第一个缓冲文件并重置更改: rewind, first
编辑最后一个缓冲文件并重置更改: last
整理所有缓冲文件: all

3 Window

3.1 Split

1
2
3
4
5
6
7
8
9
10
11
sp                      " 水平切割,并在新窗口中载入file
vs " 垂直切割,并在新窗口中载入file
<C-w> s " 水平切割,在新窗口中任然显示当前缓冲区
<C-w> v " 垂直切割,在新窗口中任然显示当前缓冲区

clo/q " 关闭活动窗口
on " 关闭其他窗口(非常有用)

<C-w>= " 使所有窗口等宽、等高
<C-w>_ " 最大化活动窗口的高度
<C-w>| " 最大化活动窗口的宽度

3.2 Move

1
2
<C-w>w                 " 窗口循环切换
<C-w>h/j/k/l " 左右上下切换

4 File Options

4.1 File Format

文件EOL 格式: help fileformat
filetype见笔记

4.1.1 Introduction

vim能够识别的文件格式为:unix/Dos/unix,不同的换行操作.

1
2
3
dos	    <CR> <NL>
unix <NL>
mac <CR>

4.1.2 Command

设置和查看文件格式:

1
2
set ffs         " 支持的文件格式
set ff " 当前文件格式

4.1.3 乱码原因

每种文件格式在写入以及读取一行时都是以上述的操作来作为标准,如果用dos去读取unix文件,即试图 从’^J’(LF)中识别’^M^J’(即CRLF),所以发生错误

4.1.4 删除^M

1
2
3
%s/\r//g
" 或者
%s/<C-v><C-m>//g

4.2 File Encoding

字符编码: help fileencoding
vim内部字符编码: help encoding

4.2.1 Introduction

缓冲区所在文件的字符编码, 注意字符编码和文件格式的区别.
其中vim内部字符编码一般为utf8, 不建议设置为其他值.
如果未设置fileencoding, 默认使用encoding的值替代当前文件的字符编码.

4.2.2 Command

1
2
3
4
set fileencoding        " 当前文件字符编码
set fileencodings " 字符编码列表

set encoding " vim内部字符编码

5 Example

5.1 Faster Loading of large file

由于的缘故, vim在打开大文件并且执行
额外的功能时, 会造成非常大的卡顿, 严重的情况下, 直接导致进程一直卡顿运行中.
需要在vimrc中增加额外的限制, 对于大文件, 有选择的删除某些功能.
Faster loading介绍.