开始Vim之旅《Vim 8文本实战》

Vim 简介

Vim是一个模式编辑器,起源于早期的命令操作系统时代。随着图形化(GUI)的愈发盛行,以至于图形化成为开发者选择操作逻辑的首选方案,模式编辑器的难度大、门槛高、反人类操作特点决定了它在民间消失的未来。

但是!Vim 作为一款模式编辑器相比于无模式编辑器来说,有着无与伦比的优越性。

  1. Vim 是自由的、可控的、开源的,我们可以根据自己的需求打造出一个属于自己的编辑器,这完全凭借自己的爱好。
  2. Vim 是快速的,只要掌握了 Vim 的高级编辑技巧,就能够手不离键盘,快速的定位、插入、修改。
  3. Vim 是可拓展的,它拥有众多强大的插件,让 Vim 更加的强大和不可超越!

模式介绍

Vim 有四种模式:

  1. 普通模式(Normal mode)
    • 当你使用 Vim 打开一个文件的时候,就进入了 Normal Mode(普通模式)。这时候,键盘上的每一个按键都对应着一个具体或者隐含的命令和功能。
  2. 插入模式(Insert mode)
    • 当按下 i键时,就进入了 Insert Mode(插入模式),这时的操作和普通的无模式编辑器的操作无异。
  3. 视觉模式(Visual mode)
    • 当按下 v键时,就进入了 Visual Mode(视觉模式),这时候 Vim 会把选中的字符高亮,方便用户观察。
  4. 命令模式(Command mode)
    • 当按下 :键时,就进入了 Command Mode(命令模式),Vim 拥有众多从复杂到简单的命令,例如打开、保存、关闭文件;设置主题等等。

配置文件的修改

一般位于 $HOME/.vimrc,就是用户目录下的 .vimrc文件,Windows 下是用户目录下的 _vimrc文件。

syntax on " 支持语法高亮显示
filetype plugin indent on "启用根据文件类型自动缩进

set autoindent "开始新行时处理缩进
set expandtab "将制表符Tab展开为空格,这对于Python尤其有用
set tabstop=4 "要计算的空格数
set shiftwidth=4 "用于自动缩进的空格数

set backspace=2 "在多数终端上修正退格键Backspace的行为

colorscheme murphy "修改配色主题

set directory=$HOME/.vim/swap/ "统一交换文件的存放目录

" set noswapfile 禁用交换文件

set undofile "启动持久性的撤销记录
"设置统一的记录文件存放目录
if !isdirectory("$HOME/.vim/undodir")
    call mkdir("$HOME/.vim/undodir", "p")
endif
set undodir="$HOME/.vim/undodir"

Vim 的基本操作

打开/新建一个文件

vim hello.c

如果 hello.c存在,则打开它,否则新建【new】。终端的左下方会显示当前的文件或者编辑器的状态,包括文本的单词数目、行数等。

保存并退出

命令模式下输入

:wq!

这是个组合命令,命令 :w[write],写入保存文件;命令 :q[quit]代表退出 vim 编辑器;而 !代表强制的意思。如果修改了文件的内容,但在退出的时候又不想保留,就可以使用 :q!强制推出命令。

移动光标

如果你生在上世纪的那个年代,你连移动光标都不会!

Vim 最原始的设置是普通模式下使用 H,J,K,L ,这四个键代表 左移、下一行、上一行、右移 。但是现在,可以使用键盘上的方向键来进行控制。它们还可以和数字进行结合使用,例如:

4h #左移四个字符
2l #右移连个字符
h  #向下移动一行
6j #向上移动6行

逐单词的移动

Vim 有两种单词对象:狭义单词(word)和广义单词(WORD)。

  • 狭义单词认为,单词是由空白字符(空格、制表符或换行符)分割的字母、数字、下划线组成的序列;
  • 广义单词认为,单词是由空格、且仅仅只能是空格分隔的任何非空字符组成的序列(就是只认空格作为分界)。
案件 行为
w 逐个狭义单词移动
e 向前移动直到最近狭义单词的结尾
b 向后移动到狭义单词的结尾
W 逐个广义单词移动
E 想前移动到最近广义单词的结尾
B 向后移动到广义单词的开头

段落间的移动

按键 行为
{ 向后移动一个段落
} 向前移动一个段落

这些命令都可以配合数字使用,前面的数字代表重复命令的次数。

插入模式

普通模式下,按下 i键进入插入模式。当前模式下的操作与我们平常使用的无模式编辑下的没有多大的区别,可以自由的编辑文本内容。

按下 ESC键(一般位于键盘的最左上方)返回普通模式。

插入模式下的简单编辑

修改命令 c,可令用户在删除一段文字之后立即进入插入模式。修改命令是一个复合命令,即它后面必须指定其他的命令,用于告诉 Vim 修改哪一部分。例如:

命令 作用
cw 在删除光标前方的狭义单词之后,进入插入模式
c3e(逗号视为一个词) 作用和 cw 相同,只不过把逗号也视为单词的一部分(广义单词)
cb 在删除光标后方的狭义单词之后,进入插入模式
c4l 删除光标后方的 4 个字符之后,进入插入模式
cW 在删除光标前方的广义单词之后,进入插入模式

整行的修改

命令 作用
dd 删除一整行(附带最后的换行符)
cc 删除一整行,然后进入插入模式。保持当前的缩进水平,这在编程时很有用。

换页

使用键盘上的 PageUpPageDown,或者使用Ctrl+fCtrl+b

Vim 手册

键入命令::h[help]即可查看 Vim 手册。

在 Vim 中搜索

使用

:h search

在按 Ctrl+D,即可查看所有的命令,选择其中的一项 search-commands 即可搜索命令。


最后修改于 2020-10-03

此篇文章的评论功能已经停用。