vim 使用心得

从15年开始使用vim,一开始总是用的不顺手,后来发现是因为没有对vim进行定制化。 vim需要个人配置才真正属于自己。我将自己平时使用的一些心得分享出来,如果不对的地方,欢迎指正。

一、基本命令

1
2
3
4
5
u   撤销上一步的操作 
Ctrl + r 恢复上一步被撤销的操作

p 黏贴
d 剪切

1.1 查找

/ 向下查找

? 向上查找

n查找下一个,N查找上一个

*查找下一个光标所在处的单词,

# 查找上一个光标所在处的单词

1.2 保存退出

:wq

或者按两次Z保存退出

下面是我自定义的Ctrl+s保存退出

1
2
3
4
" 快速保存退出
inoremap <C-s> <esc>:wq<cr> " save and exit
nnoremap <C-s> :wq<cr>
vnoremap <C-s> <esc>:wq<cr>

二、跳转

2.1、行内跳转

跳转到行首或者行尾部

1
2
行首: ^ 或者0 或者Home
行尾: $ 或者 end

这个是vim自带的跳转到行首和行尾的快捷键,不过我真的用不惯,因为手指没有那么长,囧...

所以我定义了自己的快捷键(esc也比较远,所以也定义了快捷键)

1
2
3
4
5
6
" H跳转到行首
noremap H ^
" L跳转到行尾
noremap L $
" jj 替换 Esc
inoremap jj <Esc>

I是定位到行首切换到插入模式,A是定位到行末并切换到插入模式。

fa 跳到当前行下一个a这个命令非常好用f,即跳转到下一个,

fa这个命令这个可以配合;,比如找到a之后按;可以快速的跳转到下一个a,也就是重复前一个指令,,重复反向找的操作。

ta 跳到下一个a前面 大写的意思相反,这个快速定位

w 跳到下一个单词的开始 3w 调到从当前位置第三个单词的开始 e 跳到单词的结束

为了方便我自定义了行首行尾的跳转

2.2、文章跳转

1
2
3
4
5
6
7
8
9
10
11
12
13
h, j, k, l分别代表向左、下、上、右移动。

12j跳转到当前行的后12行的位置

如同许多vim命令一样,可以在这些键前加一个数字,表示移动的倍数。

[+ctrl+i 跳 转 到函数 、变量和#define

例如,"10j"表示向下移动10行;"10l"表示向右移动10列。

M 跳到屏幕的中间

如CTRL-F 向前一页 CTRL-B 向后一页

Ctrl - d 向下半页 Ctrl - u 向上半页我觉得更实用 这样看文章时就不会跳转出错

2.3、 滚屏

  • <C-f> 向下滚动一屏幕

  • <C-b> 向上滚动一屏幕

  • <C-u> 向上滚动半屏幕

  • <C-d> 向下滚动半屏幕

2.4、标记移动

标记是Vim中一个很神奇的功能,它能在你需要的地方以某个按键作为标记,你就可以通过这几个按键来进行快速的跳转。

  • :marks 标记列表
  • m + x 标记当前位置为x
  • `x 跳转到标记为x的位置
  • 'x 跳转到标记为x的行
  • `` 跳转到跳转之前的位置
  • ' ' 跳转到跳转之前的行
  • `. 跳转到最后修改的位置
  • '. 跳转到最后修改的行

三、删除与复制

X 向前删除

x 向后删除

ddyG 全部复制 ggdG 全部删除

g全局替换,c表示需要确认

:%s/FISH/fish/gc

四、visual模式

v 切换到visual模式

V切换到visual行选中模式

Ctrl+v 切换到块选中模式,可以一次操作多行

五、我的vim配置

请参考:https://gist.github.com/iceqing/06299c59bf42d73549899268b557e8e5

系列文章: 1. Vim 使用心得 2. Vim解决UltiSnips requires py >= 2.7 or py3

https://saul-mirone.github.io/2017/06/27/vim-basic-operation/#2-pao-qi-esc-he-fang-xiang-jian