VIM 学习笔记

这些笔记是我在读《Vim实用技巧(第二版)》后记录下的一些使用Vim的方法。因为书中介绍的方法繁多,我只记录了平时较常用的技法。

我常用的Vim快捷键

  • 删除一个单词:daw
  • 删除两个单词:d2w
  • 删除整个段落:dap
  • 重复上一次的操作:.
  • 撤销操作:u
  • 复制一行:yyp
  • 自动缩进整个文件:gg=G
  • 删除前一个字符:Ctrl+h
  • 删除前一个单词:Ctrl+w
  • 删除到行首:Ctrl+u
  • 命令行界面查找单词:正向/,反向?
  • 重复上一次查找:上一次匹配:N,下一次匹配n
  • 重复跳转查找:正向;,反向,
  • 正向移动到下一个单词的结尾:E
  • 反向移动到上一个单词的结尾:gE
  • 删除到句号:dt.
  • 剪切并粘贴一行:ddp
  • 复制并粘贴一行:yyp
  • 剪切一个单词:diw
  • 复制一个单词:yiw
  • 替换所有关键词:s/[source_word]/[target_word]/g[c]

动态改变Vim设置项(以ignorecase为例)

  • set ignorecase 开启命令
  • set noignorecase 关闭命令
  • set ignorecase! 反转设置该命令
  • set ignorecase? 获取当前命令的状态
  • set ignorecase& 将某状态设为默认值

将配置文件保存至vimrc文件

首先需要创建一个空的文件来保存配置信息:
!#customizations/two-space-indent.vim

"Use two spaces for indentation

set tabstop=2
set softtabstop=2
set shiftwidth=2
set expandtab
然后通过source [filename]命令将指定的文件设置项目应用于当前会话。
但是这样每次打开都要加载非常麻烦,因此我们可以将配置写在默认的配置文件中,以便每次启动时自动加载:
# vim ~/.vimrc
小提示:理想情况不是把配置信息直接写进去,而是把source [filename]命令加入文件末尾。

一些常用的配置

set encoding=utf-8
set showmatch
set smartindent
set autoindent
set tabstop=4
set rnu
set cursorline

移动光标的方法

在 VIM 中写代码时,移动光标就显得非常重要了。hjkl 用于控制光标移动,当想要多行移动时,可使用数字加上命令的形式进行操作,例如向下移动三十行,可使用 30↓30j 作为组合键。另有:
  • n<Space>: n 表示一个数字,填写数字之后再按下空格,光标会向右移动这一行 n 个字符。
  • n<Enter>: n 表示一个数字,填写数字之后再按下回车,光标会向下移动这 n 行。
  • 0Home键:移动到这一行最前面的字符处。
  • $End键:移动到这一行最后字符串处。
  • gg:移动到文件头部
  • G:移动到文件末尾

多窗口操作

# 同时打开多个文件,并横向排列
$ vim -o t.c t.h

# 将所有的文件横向排列
:all 

# 将所有的文件纵向排列
:vertical all

# 以分割形式打开文件
:sp [filename]
:vs [filename]

# 关闭当前窗口
:close

# 保留当前窗口,关闭其他窗口
:only

# 在窗口之间跳转
ctrl+w j 向下移动(或相应方向键)
ctrl+w k 向上移动(或相应方向键)
ctrl+w h 向左移动(或相应方向键)
ctrl+w l  向右移动(或相应方向键)
ctrl+w t 移动到顶端
ctrl+w b 移动到底端

# 调整窗口大小
Ctrl + w + [num(alt)] + + 纵向扩大窗口
Ctrl + w + [num(alt)] + -  纵向缩小窗口
Ctrl + w + [num(alt)] + > 横向扩大窗口
Ctrl + w + [num(alt)] + < 横向缩小窗口

# 移动窗口
Ctrl + w + r:向右或向下方交换窗口,而Ctrl + w + R则和它方向相反
Ctrl + w + x:交换同列或同行的窗口的位置

命令模式的文件操作

  • :w [filename] 将编辑的数据存储成另一个文件。
  • :r [filename] 在编辑的数据中读入另一个文件,并将文件的内容追加到游标之后。
  • :n1,n2 w [filename] 将 n1 到 n2 的内容存储成 filename 这个文件。
  • ! command 暂时离开 vim 并执行 linux 命令。

代码中批量注释

方法一:块选择模式

  • 批量注释:Ctrl + V 进入块选择模式,然后移动光标选中需要注释的行,再按大写的 [I]nsert 进入行首插入模式,输入注释符号 //#,输入完毕之后,按两下 Esc,Vim 会主动将你选中的所有行首都加上注释。
  • 取消注释:Ctrl + V进入块选择模式,选中你要删除的行首的注释符号,注意 // 要选中两个,选好之后按 d 即可删除注释,然后 Esc 保存退出。

方法二:批量替换

  • 批量注释::起始行号,结束行号s/^/注释符/g 例如 :10,20s/^/#/g
  • 取消注释::起始行号,结束行号s/^注释符//g 例如 10,20s/#//g

其他

有的时候调试文件报错,说配置文件几行几行出错了,这时候就可以使用Vim打开文件到指定行,像这样:
# vim  +n  test.txt

参考资料

评论