学习中心/工程实践/Linux/Linux 5:Vim,多文件、宏、vimrc

· Linux · 5 · 工作台

Linux 5:Vim,多文件、宏、vimrc

buffer、窗口、宏、十行 vimrc。插件以后再说。

正在加载录音…

多文件、宏、十行 vimrc

改一段会了。这一节把 Vim 当工作台:几个文件来回、窗口、宏、自己的配置。插件以后再说。服务器上没有插件,这几样就该够。

  1. 文件:e :ls
  2. 窗:sp Ctrl-w
  3. 宏qa … q @a
  4. 配置~/.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。左下角出现 recordingqa
  • 键
    再按 q 停录。中间是你的按键,含 i、Esc、jq
  • 键
    放一遍。@@ 再放刚才那个。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 一份 .baksudo 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 是你写的那十行。下一篇读权限那一串字符。

同模块

工程实践 →