您的位置:58脚本 > vim 做笔记 Vim 备忘单

vim 做笔记 Vim 备忘单

2023-03-20 21:32 Vim教程

vim 做笔记 Vim 备忘单

vim 做笔记

Vim 是一款功能强大的文本编辑器,它可以帮助我们快速地编写代码,也可以用来做笔记。Vim 的优势在于它的高效性,可以帮助我们更快地完成工作。

使用 Vim 做笔记有很多优势,首先,Vim 拥有强大的文本处理能力,可以帮助我们快速地搜索、替换、删除文本内容。此外,Vim 还具备语法高亮显示、代码补全、自动保存、多文档分屏显示等特性,这些特性都能帮助我们更好地完成工作。

  例如:
  :set spell spelllang=en_us   // 英文单词拼写检查
  :set number                 // 显示行号
  :set autoindent            // 自动对齐

此外,Vim 还可以与其它应用进行集成,例如与 Markdown 结合使用时可以将 Markdown 标记语法转化为 HTML 样式的文本样式。这样就可以方便地将 Vim 用于写作和制作文章。

总之,使用 Vim 做笔记是一个很好的选择。它不但能够帮助我们快速地实现文本处理工作,而且还能与其它应用进行集成来方便地制作文章。因此,使用 Vim 做笔记是一个很好的选择。

Vim 备忘单

inner / aroundinner / aroundVim 8.2 快速参考备忘单的有用集合,可帮助您更快地学习 vim 编辑器。

开始

运动图

▼/▶ Cursor   ▽/▷ Target

左右动作

┌───────────── |      
├───────────── 0      $ ──────────────┐ 
│  ┌────────── ^      fe ────────┐    │
│  │  ┌─────── Fo     te ───────┐│    │
│  │  │┌────── To     30| ───┐  ││    │
│  │  ││ ┌──── ge     w ───┐ │  ││    │
│  │  ││ │ ┌── b      e ─┐ │ │  ││    │
│  │  ││ │ │  ┌h      l┐ │ │ │  ││    │
▽  ▽  ▽▽ ▽ ▽  ▽▼      ▼▽ ▽ ▽ ▽  ▽▽    ▽
   echo "A cheatsheet from quickref.me"

上下动作

                 - SCREEN 1 START
   ┌─┬─────────▷ #!/usr/bin/python
   │ │     ┌───▷     
   │ │     │     print("Hello")
   │ │     { } ▶ print("Vim")
   │ │       │   print("!")
   │ │       └─▷    
   │ │ ┌───┬───▷ print("Welcome")
G gg H M L k j ▶ print("to")
│        │   └─▷ print("quickref.me")
│        │       print("/vim")
│        │     
│        └─────▷ 
│                - SCREEN 1 END
└──────────────▷ print("SCREEN 2")

快捷键大全

h | j | k | l 方向键
<C-u> / <C-d> 上/下半页
<C-b> / <C-f> 向上/向下翻页

b / w 上一个/下一个单词
ge / e 上一个/下一个词尾

线

0 (零) / $ 行开始/结束
^ 行首(非空白)

特点

Fe / fe 移至上一个/下一个 e
To / to 在上一个/下一个之前/之后移动 o
| / n| 转到第一/n第列

文档

gg / G 第一行/最后一行
:n | nG 去线 n
} / { 下一个/上一个空行

窗口

H / M / L 上/中/下屏幕
zt / zz / zb 这条线的顶部/中心/底部

插入模式

i / a 在光标前/后插入
I / A 插入行首/行尾
o / O (字母) 在下方/上方插入新行
s / S 删除字符/行并插入
C 更改为行尾
gi 在最后一个插入点插入
Esc | <C-[> 退出插入模式

保存和退出

:w 节省
:q 关闭文件
:wq | :x | ZZ 保存并退出
:wqa 保存并退出所有文件
:q! | ZQ 强制退出
:qa 关闭所有文件
:qa! 强制退出所有文件
:w new.txt 写给 new.txt
:sav new.txt 保存和编辑 new.txt
:w !sudo tee % 写入只读文件

正常模式

r 替换一个字符
R 进入替换模式
u / 3u 撤消更改1/3次数
U 在一行上撤消更改
J 加入下一行
<C-r> / 5<C-r> 重做更改1/5次数

剪切和粘贴

x 删除字符(剪切)
p / P 粘贴之后/之前
xp 交换两个字符
D 删除到行尾(剪切)
dw 删除单词(剪切)
dd 删除线(剪切)
ddp 交换两行
yy 扬克线(复印)
"*p | "+p 从系统剪贴板粘贴
"*y | "+y 粘贴到系统剪贴板

在视觉模式

d | x 删除选择 (剪切)
s 替换选择
y Yank 选择(复制)

重复

. 重复上一个命令
; 重复最近的f, t,FT
, 重复上次的ftFT逆转
& 最后重复 :s
@: 重复命令行命令

视觉模式

v 进入视觉模式
V 进入视线模式
<C-v> 进入视觉块模式
ggVG 选择所有文本
> / < 向右/向左移动文本

qi 录制宏 i
q 停止录制宏
@i 运行宏 i
7@i 运行宏i7 次
@@ 重复上一个宏

Vim 操作符

用法

d w
Operator(操作符)
Motion(动作)

结合操作符动作来使用它们

可用的运算符

d 删除
y 扬克(复制)
c 更改(删除然后插入)
p 粘贴
= 格式代码
g~ 切换案例
gU 大写
gu 小写
> 缩进权
< 向左缩进
! 通过外部程序过滤

例子

dd 删除当前行
dj 删除两行
dw 删除到下一个单词
db 删除到词首
dfa 删除直到a字符
d/hello 删除直到 hello
cc 更改当前行
yy 复制当前行
>j 缩进 2 行
ggdG 删除一个完整的文档
gg=G 缩进完整的文档
ggyG 复制整个文档

计数

[count] <operator> <motion>
<operator> [count] <motion>

2dd 删除2
6yy 复制6
d3w 删除3单词
d5j 5向下删除
>4k 4向上缩进线

Vim 文本对象

用法

v         i / a p
Operator(操作符)
inner / around
Text object(文本对象)

在文本块内部或周围使用运算符操作

文本对象

p
段落
w
单词
W
WORD
(由空格包围)
s
句子
[ ( { < []、() 或 {} 块
] ) } > []、() 或 {} 块
" ` 带引号的字符串
b 一个块 [(
B [{ 中的一个块
t 一个 HTML 标签块

:help text-objects

删除

​​​diw​​​
删除内词
​dis​
删除内句
​di​"
在引号中删除
​da​"
在引号中删除(包括引号)
​dip​
删除一个段落

选择

​v​i 选择内引号“ ...
va 选择引号 "..."
vi[ 选择内括号 [ ...]
va[ 选择括号 [...]
viw 选择内词
vip 选择内部段落
vipip 选择更多段落

杂项

ciw 改变内在的话
​​ci​ 更改内部引号
cit 更改内部标签 (HTML)
cip 更改内部段落
yip 拉取内段
ysp Yank 段落(包括换行符)

Vim 多个文件

缓冲器

:e file 在新缓冲区中编辑文件
:bn 转到下一个缓冲区
:bp 转到上一个缓冲区
:bd 从缓冲区列表中删除文件
:b 5 打开缓冲区 #5
:b file 按文件转到缓冲区
:ls 列出所有打开的缓冲区
:sp file 打开和拆分窗口
:vs file 打开和垂直拆分窗口
:hid 隐藏此缓冲区
:wn 写入文件并移至下一个
:tab ba 将所有缓冲区编辑为选项卡

窗口

<C-w> s 拆分窗口
<C-w> v 垂直拆分窗口
<C-w> w 切换窗口
<C-w> q 退出窗口
<C-w> T 进入新标签页
<C-w> x 与下一个交换当前
<C-w> - / + 降低/增加高度
<C-w> < / > 减少/增加宽度
<C-w> | 最大宽度
<C-w> = 同样高宽
<C-w> h / l 转到左/右窗口
<C-w> j / k 转到上/下窗口

标签

:tabe [file] 在新选项卡中编辑文件
:tabf [file] 如果在新选项卡中存在则打开
:tabc 关闭当前标签
:tabo 关闭其他标签
:tabs 列出所有标签
:tabr 转到第一个选项卡
:tabl 转到最后一个选项卡
:tabm 0 移动到位置 0
:tabn 前往下一个标签
:tabp 前往上一个标签    

正常模式

gt 前往下一个标签
gT 前往上一个表亲啊
2gt 前往编号为 2的标签

Vim 搜索和替换

/foo 向前搜索
/fooc 向前搜索(不区分大小写)
?foo 向后搜索
/vd+ 使用正则表达式搜索
n 下一个匹配的搜索模式
N 上一场匹配
* 向前搜索当前词
# 向后搜索当前词

换行

:[range]s/{pattern}/{str}/[flags]
:s/old/new 先更换
:s/old/new/g 全部替换
:s/vold/new/g 全部替换为正则表达式
:s/old/new/gc 全部替换(确认)
:s/old/new/i 先忽略大小写替换
:2,6s/old/new/g 在行之间替换2-6

#替换文件

:%s/{pattern}/{str}/[flags]
:%s/old/new 先更换
:%s/old/new/g 全部替换
:%s/old/new/gc 全部替换(确认)
:%s/old/new/gi 全部替换(忽略大小写)
:%s/vold/new/g 全部替换为正则表达式

范围

% 整个文件
’<,’> 当前选择
5 线 5
5,10 510
$ 最后一行
2,$ 2到最后
. 当前线路
,3 下一3
-3, 前锋3线

全局命令

:[range]g/{pattern}/[command]

:g/foo/d 删除包含的行 foo
:g!/foo/d 删除不包含的行 foo
:g/^s*$/d 删除所有空行
:g/foo/t$ 复制包含foo到 EOF 的行
:g/foo/m$ 移动包含foo到 EOF 的行
:g/^/m0 反转文件
:g/^/t. 复制每一行

Inverse :g

:[range]v/{pattern}/[command]
:v/foo/d 删除不包含foo
(也:g!/foo/d)的行

Flags

g 替换所有出现
i 忽略大小写
I 不要忽略大小写
c 确认每次替换

替换表达式(魔术)

& | 0 替换为整个匹配
1...9 替换为 0-9 组
u 大写下一个字母
U 大写以下字符
l 小写下一个字母
L 小写以下字符
e 结束u, U,lL
E 结束u, U,lL

例子

:s/a|b/xxx0xxx/g		         # Modifies "a b"      to "xxxaxxx xxxbxxx"
:s/test/U& file/                # Modifies "test"     to "TEST FILE"
:s/(test)/U1e file/         # Modifies "test"     to "TEST file"
:s/v([abc])([efg])/21/g	     # Modifies "af fa bg" to "fa fa gb"
:s/vw+/u0/g		             # Modifies "bla bla"  to "Bla Bla"
:s/v([ab])|([cd])/1x/g         # Modifies "a b c d"  to "ax bx x x"
:%s/.*/L&/                      # Modifies "HTML"     to "html"
:s/v<(.)(w*)/u1L2/g        # Make every first letter of a word uppercase
:%s/^(.*)n1/1/              # Remove duplicate lines
:%s/</=(w+)>/U&/g        # Convert HTML-Tags to uppercase
:g/^pattern/s/$/mytext           # Find and append text to the end
:g/pattern/norm! @i              # Run a macro on matching lines
/^(.*)(r?n1)+$          # View the duplicates lines
/v^(.*)(r?n1)+$              # View the duplicates lines (very magic)
:v/./,/./-j                      # Compress blank lines into a blank line
:g/<p1>/,/<p2>/d                 # Delete inclusively from <p1> to <p2>

Vimdiff

用法


$ vimdiff file1 file2 [file3]
$ vim -d file1 file2 [file3]

编辑

:[range]diffget [bufspec]
:[range]diffput [bufspec]

do / :diffget 获得(get)差异
dp / :diffput 区分差异
:dif 重新扫描差异
:diffo 关闭差异模式
:1,$+1diffget 获取所有差异
ZQ 退出而不改变

请参阅:范围

折叠

zo / zO 打开
zc / zC 关闭
za / zA 切换
zv 为这条线打开折叠
zM 关闭所有
zR 全部打开
zm 折叠更多(foldlevel += 1)
zr 减少折叠(foldlevel -= 1)
zx 更新折叠

跳跃

]c 下一个区别
[c 以前的区别

其他

案件

vU 大写字符
vu 小写字符
~ 切换大小写字符
viw U 大写单词
viw u 小写单词
viw ~ 切换大小写单词
VU / gUU 大写
Vu / guu 小写
V~ / g~~ 切换案例
gggUG 大写所有文本
ggguG 小写所有文本
ggg~G 切换大小写 所有文本

跳跃

<C-o> 返回上一个
<C-i> 直走
gf 转到光标中的文件
ga 显示十六进制、ASCII 值

其他命令行

:h 帮助 打开帮助视图
:edit! 重新加载当前文件
:2,8m0 移动线2-80
:noh 清除搜索亮点
:sort 排序线
:ter 打开终端窗口
:set paste 启用插入粘贴子模式
:set nopaste 禁用插入粘贴子模式
:cq 出现错误退出
(中止 Git)
% 最近/匹配 {[()]}
[( | [{ | [< 上一个(,{<
]) | ]{ | ]> 下一个)}>
[m 上一个方法开始
[M 上一个方法结束

柜台

<C-a> 增加数量
<C-x> 减少数量

标签

:tag Classname 跳转到 Classname 的第一个定义
<C-]> 跳转到定义
g] 查看所有定义
<C-t> 返回上一个标签
<C-o> <C-i> 后退前进
:tselect Classname 查找 Classname 的定义
:tjump Classname 查找类名的定义(自动选择第一个)

格式化

:ce 8 8之间的中心线
:ri 4 4处右对齐行
:le 左对齐线

:help formatting

分数

`^ 插入模式下光标的最后位置
`. 当前缓冲区的最后更改
`" 最后退出的当前缓冲区
`0 在上次编辑的文件中
"" 返回当前缓冲区中跳转的行
`` 返回当前缓冲区中跳转的位置
`[ 到先前更改或猛拉的文本的开头
`] 结束先前更改或猛拉的文本
`< 到最后一个视觉选择的开始
`> 到最后一个视觉选择结束
ma 将此光标位置标记为 a
`a 跳转到光标位置 a
"a 跳到带有位置的行的开头 a
d"a 从当前行删除到标记行 a
d`a 从当前位置删除到标记位置 a
c"a 将文本从当前行更改为 a
y`a 将文本从当前位置拉到 a
:marks 列出所有当前标记
:delm a 删除标记 a
:delm a-d 删除标记a, b, c,d
:delm abc 删除标记a, b,c

计算器

<C-r> = 7*7 显示结果
<C-r> = 10/2 显示结果

在 INSERT 模式下执行此操作

shell

:!<shell> 解释 Shell 命令
:r!<shell> 读入 shell 的输出
:r!date 插入日期
:!!date 用日期替换当前行

命令行

<C-r><C-w> 将当前单词插入命令行
<C-r>" 从“注册”粘贴
<C-x><C-f> 在插入模式下自动完成路径

技巧

删除重复行

:sort | %!uniq -u

对文件中的行进行编号

:%!cat -n

将整个文档复制到剪贴板

:%w !pbcopy            # Mac OS X
:%w !xclip -i -sel c   # GNU/Linux
:%w !xsel -i -b        # GNU/Linux

另见

  • Devhints (devhints.io)
  • Vim 备忘单 (vim.rotrr.com)
  • Vim 文档 (vimdoc.sourceforge.net)
  • 交互式 Vim 教程 (openvim.com)


阅读全文
以上是58脚本为你收集整理的vim 做笔记 Vim 备忘单全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58脚本 58jiaoben.com 版权所有 联系我们
桂ICP备12005667号-28 Powered by CMS