vim使用记录以及相关配置

2022-07-24, updated 2022-07-24

源码编译

获取代码并编译

1
2
3
4
5
git clone https://github.com/vim/vim.git
cd vim/src
./configure --prefix=~/opt/usr/local/
make
make install

修改PATH

1
2
~/.bashrc
export PATH=~/usr/local/bin:$PATH

使用方法记录

有注释时粘贴代码自动换行导致错乱问题

1
2
3
4
粘贴代码时对齐问题
set paste
取消
set nopaste

修改文件类型

set fileformat=unix

设置字符可见模式,以^I表示一个tab符,$表示一个回车符等

set invlist

回到正常模式

set nolist

1
2
3
:%!xxd    查看十六进制
:set nolist	回到正常模式
:set invist	^I 表示tab,$表示回车符

查找与替换

替换语法:[addr]s/源字符串/目的字符串/[option]

如果在源字符串和目的字符串中出现特殊字符,如’/’,’<’,’>’,’,‘等需要前面加反斜杠\进行转义

常用命令示例:

 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
#将当前行第一个a替换为b
:s/a/b/

#将当前行的所有a替换为b
:s/a/b/g

#将每行第一个a替换为b
:%s/a/b

#将整个文件的所有a替换为b
:%s/a/b/g

#将1至3行的第一个a替换为b
:1,3s/a/b/

#将1至3行的所有a替换为b
:1,3s/a/b/g

上面是一些常用的替换,但是我们日常碰到的问题不止这么简单,这就要涉及到一些较为高级的替换操作,会涉及到转义,正则表达式相关的知识,下面是一些例子:

#使用#作为分隔符,此时中间出现的/不会作为分隔符,如:将当前行的字符串"a/"替换为"b/"
:s#a/#b/#

#找到包含字母a的行并删除
:g/a/d

#删除所有空行
:g/^$/d

#多个空格替换为一个空格
:s/ \+/ /g

#在正则表达式中使用和和符号括起正则表达式,即可在后面使用\1,\2等变量来访问和和中的内容,如下
将data1 data2修改为data2 data1
:s/\w\+\w\+\s\+\w\+\w\+/\2\t\1

vimgrep的使用方法

vimgrep /匹配模式/[g][j] 要搜索的文件/范围

默认使用vim作为vimgrep命令缩写

vimdiff

vimdiff 等同于 vim -d 命令,即 Vim 编辑器的 diff 模式。

可以使用下列两种快捷键,在文件的各个差异点之间前后移动:

1
2
], c:跳转到下个差异点
[, c:跳转到上个差异点

内容合并

打开多个文件

vim -O2 file1 file2

多个窗口切换

1
2
3
Ctrl-w, l:光标切换到右侧的窗口
Ctrl-w, h:光标切换到左侧的窗口
Ctrl-w, w:光标在两个窗口间彼此切换

tab标签页管理

管理tab标签页

1
2
3
4
5
6
:tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab
:tabc       关闭当前的tab
:tabo       关闭所有其他的tab
:tabs       查看所有打开的tab
:tabp      前一个
:tabn      后一个

其它命令

1
2
3
4
5
6
:qa:退出所有文件
:wa:保存所有文件
:wqa:保存并退出所有文件
qa!:强制退出(不保存)所有文件
z o:查看被折叠的内容
z c:重新折叠

修改文件换行方式

1
:set fileformat=unix

问题及解决方法

  1. vim 光标停留在上次退出位置 需要确保~/.viminfo 权限没有问题,并查看以下配置是否添加
1
2
3
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif

部分插件使用说明

vim-plug

用于管理插件的插件

1
2
3
:PlugInstall    安装插件
:PlugUpdate     更新插件
:PlugUpgrade    升级vim-plug

vim-plug下载

1
2
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
words: 1746 tags: vim