【Github仓库】Learn-Vim随笔

一、前言

学习vim的过程中发现了很多很好的资源,其中不乏bilibili上up主的精品教程。也在YouTube上看过很多教程。但Learn-Vim这个Github仓库实在让我受益良多。

本笔记便是出于此仓库:

仓库地址

附上个人.vimrc配置文件:

vim 复制代码
syntax on	" 开启语法高亮
set number	" 设置行号
set relativenumber	" 设置相对行号
set wrap		" 开启代码包裹,防止溢出屏幕	
set showcmd		" 显示命令
set wildmenu		" 开启补全菜单
set hlsearch		" 开启搜索高亮
set incsearch		" 开启实时搜索高亮
set ignorecase		" 搜索忽略大小写
set cursorline		" 开启鼠标地平线

" 按下冒号重制高亮
exec "nohlsearch"	
" 将大写JK映射为5倍jk
noremap J 5j
noremap K 5k
nnoremap <esc><esc> :noh<return><esc>
" 映射自动保存
map S :w<CR>
map Q :q<CR>
map s :<nop>
map R  :source<CR>

call plug#begin()

Plug 'vim-airline/vim-airline'
Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']}
Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && npx --yes yarn install' }
Plug 'preservim/nerdtree'
Plug 'jiangmiao/auto-pairs'
Plug 'preservim/nerdcommenter'
Plug 'connorholyday/vim-snazzy'

call plug#end()


color molokai

map sr :set splitright<CR>:vsplit<CR>
map sl :set nosplitright<CR>:vsplit<CR>
map st :set nosplitbelow<CR>:split<CR>
map sb :set splitbelow<CR>:split<CR>

noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>

二、vim语法

vim的语法只有一句,verb+noun

2.1 动词

这里简要罗列出vim的动词列表:

复制代码
y    复制
d    删除
c    修改(删除并开始编辑) 

2.2 名词

以下皆是名词,但分为了两种。

2.2.1 简单名词

复制代码
h    左
j    下
k    上
l    右
w    单词
}    跳到下一段落
$    行末尾

2.2.2 补充的名词

复制代码
w         一个单词
p         一个段落
s         一个句子
( or )    一对 ( ) 括号
{ or }    一对 { } 括号
[ or ]    一对 [ ] 括号
< or >    一对 < > 括号
t         一对XML标签,例如<html></html>
"         一对 " " 引号
'         一对 ' ' 引号
`         一对 ` ` 引号

三、移动

3.1 字符导航

复制代码
h   向左
j   向下
k   向上
l   向右
gj  Down in a soft-wrapped line
gk  Up in a soft-wrapped line

禁用箭头的设置:

复制代码
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>

相对行号:

复制代码
set relative number

3.2 计算编号

复制代码
[count] + motion

3.3 词语导航

复制代码
w     移动到下一个word的开头
W     移动到下一个WORD的开头
e     移动到下一个word的结尾
E     移动到下一个WORD的结尾
b     移动到上一个word的开头
B     移动到上一个WORD的开头
ge    移动到上一个word的结尾
gE    移动到上一个WORD的结尾

3.4 行导航

复制代码
0     跳转到当前行的第一个字符
^     跳转到当前行的第一个非空白字符
g_    跳转到当前行的最后一个非空白字符
$     跳转到当前行的最后一个字符
n|    跳转到当前行的第n列

3.5 搜索动词

复制代码
f    在同一行搜索下一个匹配
F    在同一行搜索前一个匹配
t    在同一行搜索下一个匹配,但是光标落在目标前
T    在同一行搜索下一个匹配,但是光标落在目标后
;    在同一行使用上一次搜索,方向相同
,    在同一行使用上一次搜索,方向相反

3.6 句子导航和段落导航

复制代码
(    跳到上一个句子
)    跳到下一个句子

下面是一个有两个段落的句子:

复制代码
I am a sentence. I am another sentence because I end with a period. I am still a sentence when ending with an exclamation point! What about question mark? I am not quite a sentence because of the hyphen - and neither semicolon ; nor colon :

There is an empty line above me.

个人感觉句子、段落在代码里可能就不是那么实用。但用于写文章博客还是很屌的。

3.7 匹配导航

程序员专用

光标在成对的括号中其中一对上时按下%来跳到对应的括号上。

使用场景:

复制代码
(define (fib n)
  (cond ((= n 0) 0)
        ((= n 1) 1)
        (else
          (+ (fib (- n 1)) (fib (- n 2)))
        )))

光标在其中一个括号上可以快速跳转到对应的括号。

3.8 行号导航

复制代码
gg    去到第一行
G     去到最后一行
nG    去到第n行
n%    去到第百分之n行

使用ctrl+g来显示行数。

gg和GG绝对是实用中的实用。

3.9 窗口导航

复制代码
H     去到屏幕的最上方
M     去到屏幕的最中间
L     去到屏幕的最底部  
nH    去到离屏幕顶部n行的位置
nL    去到离屏幕底部n行的位置

3.10 滚动

复制代码
Ctrl-E    向下滚动一行
Ctrl-D    向下滚动半个屏幕
Ctrl-F    向下滚动
Ctrl-Y    向上滚动一行
Ctrl-U    向上滚动半个屏幕
Ctrl-B    向上滚动整个屏幕

3.11 搜索导航

这里的搜索是整个文档的。

复制代码
/    向后搜索一个匹配
?    向前搜索一个匹配
n    重复上一个匹配,方向相同
N    重复上一个匹配,方向相反

搜索结束后关闭高亮(在~/.vimrc中添加配置):

复制代码
nnoremap <esc><esc> :noh<return><esc>

额外的补充:

复制代码
*     向后搜索光标位置的单词
#     向前搜索光标位置的单词
g*    在*的基础上增加了模糊匹配
g#    在#的基础上增加了模糊匹配

3.12 标记位置

标记当前位置,类似书签。

复制代码
ma    标记a的位置
`a    精确跳转到标记的a的位置
'a    跳转到标记a的行首

其中小写表示局部标记,大些表示全局标记。

局部标记每个文件(缓冲区)只有一个,全局标记所有文件共享。

使用marks来查看所有的标记。

更多的标记用的不多,这里直接饮用(不是错别字❌)原文:

vim 复制代码
''    Jump back to the last line in current buffer before jump
``    Jump back to the last position in current buffer before jump
`[    Jump to beginning of previously changed / yanked text
`]    Jump to the ending of previously changed / yanked text
`<    Jump to the beginning of last visual selection
`>    Jump to the ending of last visual selection
`0    Jump back to the last edited file when exiting vim

3.13 所有的跳转

复制代码
'a       去到标记的a行
`a       去到标记的a位置
G       Go to the line(这个没懂,shift+G不是跳转到文档底部吗?)
/       向后搜索
?       向前搜索
n       重复最后一次搜索,方向一致
N       重复最后一次搜索,方向相反
%       找到匹配项
(       跳到上一句
)       跳到下一句
{       跳到上一段
}       跳到下一段
L       去到显示窗口的最后一行
M       去到窗口的中间
H       去到显示窗口的顶部
[[      去到上一次会话
]]      去到下一次会话
:s      Substitute
:tag    去到定义的标签

具体说明见Lear-Vim作者文档✍️。

相关推荐
江鸟19984 小时前
AI 编程日报 · 2025 年 5 月 04 日|GitHub Copilot Agent 模式发布,Ultralytics 优化训练效率
人工智能·github·copilot
企鹅侠客15 小时前
文件一键解密软件工具(支持pdf、word、excel、ppt、rar、zip格式文件)
pdf·word·excel·文件解密
杜大哥15 小时前
WPS:把excel文件中的图片嵌入到表格的单元格中,并且随着单元格大小的改变而不失真?(图片嵌入、取消嵌入到单元格)
excel·wps
吴声子夜歌17 小时前
Linux运维——Vim技巧一
linux·运维·vim
42fourtytoo17 小时前
从0开始建立Github个人博客(hugo&PaperMod)
运维·服务器·python·go·github
A_Tai233333319 小时前
Linux-02-VIM和VI编辑器
linux·编辑器·vim
邪恶马铃薯20 小时前
excel如何做相关系数分析
excel
hi0_61 天前
Linux 第六讲 --- 工具篇(一)yum/apt与vim
linux·服务器·c++·vim·yum
qianmoQ1 天前
GitHub 趋势日报 (2025年05月01日)
github