vim编辑器使用简介

0

本文涉及:

  • vim简介
  • vim常用命令
  • .vimrc配置文件

Linux环境下的编辑器

在Linux环境下有很多编辑器,例如基于行的编辑器edex,基于文本的编辑器vimEmacs等。

vi是Unix系统下最通用的文本编辑器,安装好Linux系统后,默认安装了vivim是扩展版的vi,功能更强大。

vim使用简介

vim编辑器的模式

命令模式和编辑模式(插入模式)。

vim常用命令

  1. 模式切换

    打开文件时,默认在命令模式,按下键盘i键,进入插入模式。

    结束编辑时,按下键盘Esc键,退出编辑模式,进入命令模式。

  2. 退出vim

    在命令模式输入:wq,回车退出vim。

    w是写入的意思,保存写入的内容。

    q退出,如果不保存修改内容,可以键入:q!强制退出。

  3. 移动光标

    1
    2
    3
    4
    h	#左
    j #下
    k #上
    l #右

    当然可以通过方向键来控制光标移动,但是手指会脱离键盘字符区域,降低输入效率。

  4. 删除字符

    删除一个字符用x

    删除一整行字符用dd,删除所有行用dG

    恢复删除使用u

    撤销命令使用Ctrl+r

  5. 复制粘贴

    vim的粘贴命令是p,将内存中的字符复制到当前光标后面,使用这个命令的前提是内存中有要粘贴的字符。例如,要粘贴一行字符,可以使用dd命令删除这一行,在使用u命令恢复,此时内存中就有这一行字符可用于粘贴。

    复制命令是y,可以指定复制单词的数量。例如,y2w复制两个单词。命令yy复制光标所在整行。

  6. 查找字符串

    模糊查询使用/str,str表示要查询的字符串。例如,键入:/printf,按Enter键之后,如果匹配到字符串,光标就停留在适合的字符串上。n查看下一个匹配字符串,N查看上一个。

  7. 跳转到某行

    跳转某行使用:n,n表示行号,例如,:5,键入Enter跳转到第五行;还用一种方式是nG,例如,5G,跳转到第五行。

    光标到第一行gg

    光标到最后一行GG

    快速到行首00shift+6

    快速到行尾shift+4

vim格式设置

  1. 设置缩进

    :set cindent shiftwidth=4

  2. 设置Tab键空格数量

    :set tabstop=4

    vim默认Tab键8个空格

  3. 设置行号

    :set number // 显示行号

    :set nonumber // 隐藏行号

vim配置文件

vim启动时,会根据~/.vimrc文件配置vim的设置,所以可以通过编辑.vimrc来定制vim编辑器。

  • 系统配置:系统配置文件存放在vim的安装路径内,默认路径:/usr/share/vim/vimrc
  • 用户配置:用户配置文件.vimrc由用户自己创建,存放于用户根目录下。
1
2
3
4
5
6
# 设置缩进
set shiftwidth=4
# Tab键
set tabstop=4
# 显示行号
set number

以下是一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 设置配色
colorscheme desert
# 语法高亮
syntax on
# 文件类型识别
filetype on

# au是autocmd的缩写,BufRead和BufNewFile是触发自动命令的事件。BufNewFile是创建一个新文件,
# BufRead是将文件读入一个新缓冲区时触发。
# 如:au BufRead,BufNewFile *.sv set filetype=systemverilog的意思是,
# 当检测到文件类型是.sv结尾的文件时,将符合systemverilog语法的地方将高亮显示。
au BufRead,BufNewFile *.sv set filetype=systemverilog
au BufRead,BufNewFile *.v set filetype=verilog

# 显示行号
set number
# 自动缩进
set autoindent

# 空格代替Tab缩进
set tabstop=2
set expandtab

set shiftwidth=4
autocmd FileType make set noexpandtab

# 设置搜索行高亮
set hlsearch
set cursorline
set cursorcolumn

# 设置vim字体大小
set guifont=Monospace\ 16

# 符号匹配
inoremap ( ()<Esc>i
inoremap { {}<Esc>i
inoremap [ []<Esc>i
inoremap " ""<Esc>i

# 调用别名文件
source ~/.vim/user/alias.vim

别名文件~/.vim/user/alias.vim

1
2
3
4
5
6
7
8
9
10
11
12
13
14
iab al_ <ESC>:r ~/.vim/user/always.v<cr>
iab mo_ <ESC>:r ~/.vim/user/module.v<cr>
iab an_ <ESC>:r ~/.vim/user/annotation.v<cr>
iab fs_ <ESC>:r ~/.vim/user/fsdb.v<cr>
iab tb_ <ESC>:r ~/.vim/user/tb.v<cr>
iab cyl_ <ESC>:r ~/.vim/user/cyl.v<cr>

iab cl_ <ESC>:r ~/.vim/user/clk.v<cr>
iab rs_ <ESC>:r ~/.vim/user/rst.v<cr>

"ab model
"iab edit model
"<cr> new line
"

以第一条为例:iab al_ :r /.vim/user/always.v,在vim编辑器edit 模式下,输入“al_”,再按下“ESC”键,路径/.vim/user/下的always.v文件里的内容将会被调用,这就大大避免了重复的工作。

vimrc配置抄作业:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
set encoding=utf-8
set fileencodings=uft-8,gbk
syntax enable
set autoread
set incsearch
set ignorecase
set mouse=r
let autosave=15
colorscheme desert
syntax on
filetype on
au BufRead,BufNewFile *.sv set filetype=systemverilog
au BufRead,BufNewFile *.v set filetype=verilog
set number
set autoindent
set tabstop=4
set expandtab
set shiftwidth=4
autocmd FileType make set noexpandtab
set hlsearch
set cursorline
set cursorcolumn
set guifont=Monospace\ 16
inoremap ( ()<Esc>i
inoremap { {}<Esc>i
inoremap [ []<Esc>i
inoremap " ""<Esc>i

VimForCpp: 快速将vim打造成c++ IDE (gitee.com)

-------------本文结束感谢您的阅读-------------