一起来分享一些曾让你茅塞顿开的 Vim 命令

2023-02-06 09:10:56 +08:00
 akring

我先抛个砖,想看看大家的分享:

ciw    (删除当前单词并进入编辑模式)


ci{    (删除 {} 内的内容并进入编辑模式,同理可用于括号,双引号等,重写函数的时候非常好用)


ctrl o (编辑模式下暂时切换到 normal 模式,可以执行一条非编辑模式下的命令)
7712 次点击
所在节点    分享发现
92 条回复
windstill
2023-02-06 10:47:24 +08:00
块操作: ^ <C-v> <C-d> I-- [ESC]

^ → 到行头
<C-v> → 开始块操作
<C-d> → 向下移动 (你也可以使用 hjkl 来移动光标,或是使用%,或是别的)
I-- [ESC] → I 是插入,插入“--”,按 ESC 键来为每一行生效。

引用自《简明 Vim 练级攻略 | 酷壳 - CoolShell.cn

如果是在行尾添加的话,就在块操作之后,$到行尾,按 A 插入字符,然后 ESC 每行生效
windstill
2023-02-06 10:48:58 +08:00
还有个剪切板的操作

"+yy // 复制当前行到剪切板
"+p // 将剪切板内容粘贴到光标后面
857681664
2023-02-06 10:49:21 +08:00
: 1, 5 t .
可以使用命令模式快速复制某个区域的文本到当前光标位置,可以非常方便地在不需要移动光标进行复制
CL007
2023-02-06 11:13:26 +08:00
<a href="https://sm.ms/image/V5ZhlyA4uafmv7x" target="_blank"><img src="https://s2.loli.net/2023/02/06/V5ZhlyA4uafmv7x.png" ></a> 这个图不错
EyebrowsWhite
2023-02-06 11:16:38 +08:00
还有个,如果你安装了 jq ,那么可以用 `:%!jq .` 来格式化 json 文件,参考自 https://www.putorius.net/format-json-file-in-vim.html
xuminzhong
2023-02-06 11:16:41 +08:00
@akring 第一条 ciw ,平时都是用 cw ,两个好像没区别,都是会进入编辑模式。
chuan0144
2023-02-06 11:18:32 +08:00
上面好多回复都是很基础的操作,建议看看《 Vim 实用技巧》——Drew Neil 著
JackieMe
2023-02-06 11:25:25 +08:00
@xuminzhong 当你在一个单词中间的时候,cw 只会把光标后的部分删掉并进入编辑模式,ciw 会把整个单词删掉。
JackieMe
2023-02-06 11:27:27 +08:00
@zdt3476 caw 会在 ciw 的基础上删掉当前单词后面的空格
z1645444
2023-02-06 11:27:32 +08:00
知道 leader 键以后,设置和使用各种舒畅。
sadfQED2
2023-02-06 11:33:14 +08:00
%d
清空全部内容。不知道这个命令之前我要按半小时删除键才能把内容删完😂
fuwu1245
2023-02-06 11:42:33 +08:00
牛牛牛
这快捷键好使,谢谢楼主
mmcross
2023-02-06 11:53:04 +08:00
看完这个,关闭页面时,不由自主的输了个:
Chaconne
2023-02-06 11:59:29 +08:00
@nba2k9 老哥稳,我投给这个
GiantHard
2023-02-06 12:21:11 +08:00
cia, 依赖 text-obj-args 插件,删除当前参数并进入编辑模式,对于有类型标注的编程语言来说,比 ciw 效率高至少一倍
Sainnhepark
2023-02-06 12:23:31 +08:00
<C-v> 选中某一块文本,然后按 c ,效果是删除这一块文本,然后插入新文本,最重要的是新插入的字符会应用到每一列中,可以在一定情况下替代多光标插件。相比于多光标插件,这个特性是内置的,按的键也比多光标插件少,在某些情况下会非常方便,尤其是处理日志的时候。
ETiV
2023-02-06 12:26:18 +08:00
normal mode 下的 %,可以跳到匹配的代码块的另一端,查看、复制整段代码什么的很有用
JerBrains 里应该是 ctrl-m
Sainnhepark
2023-02-06 12:27:49 +08:00
顺便楼上提到的 text object ,其实可以装插件扩展,GitHub 上搜 textobj user ,有很多第三方 text object ,我最常用的三个是 text-obj-line 用来选中当前行,textobj-url 选中当前链接以及 textobj-entire 选中当前 buffer 的所有文本。
cwcc
2023-02-06 12:38:37 +08:00
我现在就会用 : 加个数字挑行,? 加文字搜索,:wq 保存退出,ZZ 没修改看一眼的文件直接退出,:q! 修改了但不想保存并退出,dd 删掉一行,i 插入。写点简单的都够用了。

对了,一旦某一天用 vim 用多了,我就习惯性地在 IDE 里先按下 Esc ,然后莫名在某个地方输入了 :wq ,之前老是保存这个东西。
ETiV
2023-02-06 12:52:57 +08:00
哦对 GitHub 上可以搜到一个 server 用的 vimrc 配置文件,我现在在用这个(稍微改了一下)。

里面预置了不少快捷键,比如可以在 input mode 用 F2 切换 :set paste 啥的,都是超级实用的东西

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/913470

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX