学习中心/工程实践/Linux/Linux 5:Vim,多文件、宏、vimrc
· Linux · 5 · 工作台
Linux 5:Vim,多文件、宏、vimrc
buffer、窗口、宏、十行 vimrc。插件以后再说。

多文件、宏、十行 vimrc
改一段会了。这一节把 Vim 当工作台:几个文件来回、窗口、宏、自己的配置。插件以后再说。服务器上没有插件,这几样就该够。
- 文件:e :ls
- 窗:sp Ctrl-w
- 宏qa … q @a
- 配置~/.vimrc
1. 缓冲区
打开过的文件还在内存里,叫 buffer。关窗口不等于把文件从 Vim 里拿掉。
- 令打开另一个文件。没存的当前文件会拦住你
:e /etc/nginx/nginx.conf - 令列出 buffer。% 是当前,# 是轮换
:ls - 令切到编号 2。:b nginx 按名字也能切
:b 2 - 键当前和上一个文件对调。两个文件来回改用这个
Ctrl+^
:bn :bp 下一个、上一个。:bd 从列表里拿掉,不删磁盘文件。有没存的改动,:bd 会拒绝。
2. 窗口
- 令上下劈。:vsp 左右劈。后面可跟文件名
:sp - 键在窗口间转。Ctrl+w h/j/k/l 按方向
Ctrl+w w - 键窗口一样大。Ctrl+w c 关掉这个窗口,文件还在 buffer 里
Ctrl+w =
对照两份配置用 :vsp。Tab 页 :tabnew 先不必。窗口够用。
3. 标记
- 键把当前位置标成 a。m 再跟一个字母
ma - 键跳回标记 a 的精确位置。'a 只回那一行
`a
`` 回到上一次跳之前。改一处、去文件尾看、再回来,用这个。
4. 宏
同一套按键要走二十行:录一次,放二十次。. 只重复上一次改动。宏重复一整串。
- 键开始录到寄存器 a。左下角出现 recording
qa - 键再按 q 停录。中间是你的按键,含 i、Esc、j
q - 键放一遍。@@ 再放刚才那个。10@a 十遍
@a
宏里用相对动作:j、w、ciw,不要用 42G 这种绝对行号。录之前先在一行上空手走一遍。录砸了 :reg a 能看寄存器里是什么,再 qa 覆盖。
5. 十行 vimrc
写自己的。不要复制网上两百行。放 ~/.vimrc:
- 写不要故意学 vi 的老行为
set nocompatible - 写行号
set number - 写全小写才忽略大小写
set ignorecase smartcase - 写高亮,并且打到一半就开始找
set hlsearch incsearch - 写Tab 变空格。做 Makefile 的人再例外
set expandtab tabstop=4 shiftwidth=4 - 写新行跟着上一行缩进
set autoindent - 写切 buffer 时允许有没存的改动
set hidden - 写有语法文件就高亮。没有也不报错
syntax on
改完 :source ~/.vimrc,或重开。服务器上若没有家目录的 vimrc,这次会话用 :set 也能活。别在 root 的 vimrc 里堆插件。
6. 系统文件
- 开用 root 写。改之前先 sudo cp 一份 .bak
sudo vim /etc/ssh/sshd_config - 令已经用普通用户打开、才发现要 root 时。% 是当前文件。先看懂再敲
:w !sudo tee % >/dev/null
tee 那一行会用 sudo 把缓冲区写进原文件。写错没有回收站。能先 :w /tmp/x 再 sudo cp,更稳。
7. 这一节到哪
- 进出、改一段、多文件、宏、十行 vimrc。这是把 Vim 当工具。
- 插件、LSP、补全框架,是编辑器产品,不是管机器的门槛。
- vi / vim.tiny 上宏和 ciw 可能残。要干活就装完整的 vim。
- :help motion 比再读一篇博客准。不会用 :help 时,先 :help :w。
这块过关:两个文件 Ctrl+^ 来回,宏能放十遍,vimrc 是你写的那十行。下一篇读权限那一串字符。