<commit_before>---
layout: post
title: "vim tips"
description: "vim tips"
keywords: vim, tips
category: Tools
tags: [vim, tips]
---

## 前言
有些不太常见的vim技巧总会忘掉，故写此文总结。常用的就不记录了，此处仅记录不那么常见但又很有用的地方

## 调试

`verbose` 命令可以查看某设置具体在哪个配置文件中生效，例如：

`verbose hi` 就能知道highlight配置在哪个文件被设置，
同样的`verbose nmap kk` 就能知道快捷键<kbd>k</kbd><kbd>k</kbd>在哪个文件设置，
其他的比如`verbose set syntax`之类不一一列举

设置`verbose`级别可以查看详细调试信息，例如：

`set verbose=9` 将打印很多调试信息，需要时可以试试

### 启动速度

当vim启动比较慢时，可以用如下命令测试启动速度，查看那个配置产生的影响：

```sh
vim --startuptime output.txt FILE
```

## 配置技巧

### 配色
对于terminal，常见256的配色，256颜色表参见：<https://en.wikipedia.org/wiki/File:Xterm_256color_chart.svg>

显示当前vim的配色方案用`:hi`，即显示highlight


## 操作技巧

###可视化模式下移动
在可视模式下，使用`o`命令,可以切换光标到可视块的顶部/底部。

###连接两行
用`J`即可连接前后两行，但是这两行之间会多出一个空格，如果不希望连接时含有空格可以用`gJ`。

###窗口互换
有时比如上下两窗口一个看头文件一个看实现，位置反了很别扭，用`Ctrl-W + x`
<commit_msg>add vim tips<commit_after>---
layout: post
title: "vim tips"
description: "vim tips"
keywords: vim, tips
category: Tools
tags: [vim, tips]
---

## 前言
有些不太常见的vim技巧总会忘掉，故写此文总结。常用的就不记录了，此处仅记录不那么常见但又很有用的地方

## 调试

`verbose` 命令可以查看某设置具体在哪个配置文件中生效，例如：

`verbose hi` 就能知道highlight配置在哪个文件被设置，
同样的`verbose nmap kk` 就能知道快捷键<kbd>k</kbd><kbd>k</kbd>在哪个文件设置，
其他的比如`verbose set syntax`之类不一一列举

设置`verbose`级别可以查看详细调试信息，例如：

`set verbose=9` 将打印很多调试信息，需要时可以试试

### 启动速度

当vim启动比较慢时，可以用如下命令测试启动速度，查看那个配置产生的影响：

```sh
vim --startuptime output.txt FILE
```

## 配置技巧

### 配色
对于terminal，常见256的配色，256颜色表参见：<https://en.wikipedia.org/wiki/File:Xterm_256color_chart.svg>

显示当前vim的配色方案用`:hi`，即显示highlight


## 操作技巧

###VISUAL模式下移动
在VISUAL模式下，使用`o`命令,可以切换光标到可视块的顶部/底部。

### 编辑

####连接两行
用`J`即可连接前后两行，但是这两行之间会多出一个空格，如果不希望连接时含有空格可以用`gJ`。

####递增/递减光标下的数字

<kbd>Ctrl</kbd> + <kbd>a</kbd> 递增光标下的整数,
<kbd>Ctrl</kbd> + <kbd>x</kbd> 递减光标下的整数

这个我用在统计很多件样品的时候个数的时候辅助计数，网上找了一圈计数器，还不如直接vim内置的功能。

###窗口互换
有时比如上下两窗口一个看头文件一个看实现，位置反了很别扭，用`Ctrl-W + x`


{'fraction_non_alphanumeric': 0.1567887931034483, 'fraction_numerical': 0.010775862068965518, 'mean_word_length': 7.180616740088106, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1527909', 'n_tokens_mistral': 1324, 'n_tokens_neox': 1465, 'n_words': 121}