我先抛个砖,想看看大家的分享:
ciw (删除当前单词并进入编辑模式)
ci{ (删除 {} 内的内容并进入编辑模式,同理可用于括号,双引号等,重写函数的时候非常好用)
ctrl o (编辑模式下暂时切换到 normal 模式,可以执行一条非编辑模式下的命令)
1
EyebrowsWhite 2023-02-06 09:19:48 +08:00 via Android 11
第二条的大括号可以用大写 B 代替,小括号可以用小写的 b 代替,按起来舒服些
|
2
clecho 2023-02-06 09:23:25 +08:00 2
ciw 我还真不知道,不过看见过 viw ,vi{。作用是选中单词,用法和你上面举例一样
|
3
yzld2002 2023-02-06 09:26:18 +08:00
@EyebrowsWhite #1 学到了,感谢!
|
4
szyp 2023-02-06 09:29:22 +08:00 6
:set paste 可以进入不丢失缩进的粘贴模式
|
5
nba2k9 2023-02-06 09:34:57 +08:00
:q! :wq
记住这两个,别的什么都好说 |
7
HiHi 2023-02-06 09:39:20 +08:00 7
1. ga 查看字符编码
2. <c-q> 输入编码得到字符 3. c-a,c-x 实现数字简单++--,(win 下要注意 unmap 掉这两个快捷键,默认可能因为 behave win 变成了全选跟剪切) 4. :e! 放弃修改重新加载文件 |
8
zdt3476 2023-02-06 09:42:52 +08:00 1
我习惯用 caw 从描述来看好像和 ciw 一样? 还有就是我比较喜欢用 ctrl+v 进行整列编辑
|
9
jorneyr 2023-02-06 09:51:10 +08:00 3
:x 保存退出
|
10
jdhao 2023-02-06 09:54:38 +08:00 via Android
这个叫 text object ,非常有用,绝对是使用 vim 的 top 必备技能
|
12
cluulzz 2023-02-06 09:57:38 +08:00
ggdG,ctrl v
|
13
moreant 2023-02-06 10:00:25 +08:00 1
前两个都属于文本对象的操作,有时候写 html 的时候可以 cit/cat 删除整个 tag ,挺方便的。
就是一直想知道 vim 要如何实现类似 IDEA 里 <a-j> 的选中下一个单词(Select next occurrence) |
14
acoada 2023-02-06 10:02:48 +08:00 4
normal mode:
ctrl-a 让光标后面第一个数字 +1 ctrl-x 让光标后面第一个数字 -1 也可以通过 visual mode 控制操作的数字的范围 |
15
akring OP |
16
eaststarpen 2023-02-06 10:07:23 +08:00 2
dit, dat, cit, cat, di", ci" ......
就像 @jdhao 说的, 很方便的 "modify" 特定范围的 "character sequences" `dit` means delete in tag(personaly) 在修改 xml 和 html 时候很有用 此外, di" 这种不一定要在引号中才能用, 他会自动向后寻找 e.g. "this is <光标>a 'example'" 在 <光标> 处 ci' 会自动删除 example 并进入 insert mode for more: h text-objects |
18
leexiaolang 2023-02-06 10:12:57 +08:00 1
@acoada 多光标操作? 如果是这个需求的话可以插件 vim-visual-multi 实现
|
19
nowto 2023-02-06 10:39:47 +08:00 1
view xyz.txt (或者 vim -R xyz.txt)以只读模式打开文件,相当于 less xyz.txt 或 more xyz.txt
但是 是用 vim 查看文件 |
20
cassyfar 2023-02-06 10:46:11 +08:00 1
:o 插入新的一行并编辑
ctrl + v 进入视觉编辑模式 |
21
windstill 2023-02-06 10:47:24 +08:00 1
块操作: ^ <C-v> <C-d> I-- [ESC]
^ → 到行头 <C-v> → 开始块操作 <C-d> → 向下移动 (你也可以使用 hjkl 来移动光标,或是使用%,或是别的) I-- [ESC] → I 是插入,插入“--”,按 ESC 键来为每一行生效。 引用自《简明 Vim 练级攻略 | 酷壳 - CoolShell.cn 》 如果是在行尾添加的话,就在块操作之后,$到行尾,按 A 插入字符,然后 ESC 每行生效 |
22
windstill 2023-02-06 10:48:58 +08:00 1
还有个剪切板的操作
"+yy // 复制当前行到剪切板 "+p // 将剪切板内容粘贴到光标后面 |
23
857681664 2023-02-06 10:49:21 +08:00 1
: 1, 5 t .
可以使用命令模式快速复制某个区域的文本到当前光标位置,可以非常方便地在不需要移动光标进行复制 |
24
CL007 2023-02-06 11:13:26 +08:00 2
<a href="https://sm.ms/image/V5ZhlyA4uafmv7x" target="_blank"><img src="https://s2.loli.net/2023/02/06/V5ZhlyA4uafmv7x.png" ></a> 这个图不错
|
25
EyebrowsWhite 2023-02-06 11:16:38 +08:00 1
还有个,如果你安装了 jq ,那么可以用 `:%!jq .` 来格式化 json 文件,参考自 https://www.putorius.net/format-json-file-in-vim.html
|
26
xuminzhong 2023-02-06 11:16:41 +08:00 1
@akring 第一条 ciw ,平时都是用 cw ,两个好像没区别,都是会进入编辑模式。
|
27
chuan0144 2023-02-06 11:18:32 +08:00 2
上面好多回复都是很基础的操作,建议看看《 Vim 实用技巧》——Drew Neil 著
|
28
JackieMe 2023-02-06 11:25:25 +08:00 via Android 1
@xuminzhong 当你在一个单词中间的时候,cw 只会把光标后的部分删掉并进入编辑模式,ciw 会把整个单词删掉。
|
30
z1645444 2023-02-06 11:27:32 +08:00 1
知道 leader 键以后,设置和使用各种舒畅。
|
31
sadfQED2 2023-02-06 11:33:14 +08:00 via Android 2
%d
清空全部内容。不知道这个命令之前我要按半小时删除键才能把内容删完😂 |
32
fuwu1245 2023-02-06 11:42:33 +08:00
牛牛牛
这快捷键好使,谢谢楼主 |
33
mmcross 2023-02-06 11:53:04 +08:00
看完这个,关闭页面时,不由自主的输了个:
|
35
GiantHard 2023-02-06 12:21:11 +08:00 via Android 1
cia, 依赖 text-obj-args 插件,删除当前参数并进入编辑模式,对于有类型标注的编程语言来说,比 ciw 效率高至少一倍
|
36
Sainnhepark 2023-02-06 12:23:31 +08:00 via Android 1
<C-v> 选中某一块文本,然后按 c ,效果是删除这一块文本,然后插入新文本,最重要的是新插入的字符会应用到每一列中,可以在一定情况下替代多光标插件。相比于多光标插件,这个特性是内置的,按的键也比多光标插件少,在某些情况下会非常方便,尤其是处理日志的时候。
|
37
ETiV 2023-02-06 12:26:18 +08:00 via iPhone 1
normal mode 下的 %,可以跳到匹配的代码块的另一端,查看、复制整段代码什么的很有用
JerBrains 里应该是 ctrl-m |
38
Sainnhepark 2023-02-06 12:27:49 +08:00 via Android 1
顺便楼上提到的 text object ,其实可以装插件扩展,GitHub 上搜 textobj user ,有很多第三方 text object ,我最常用的三个是 text-obj-line 用来选中当前行,textobj-url 选中当前链接以及 textobj-entire 选中当前 buffer 的所有文本。
|
39
cwcc 2023-02-06 12:38:37 +08:00 1
我现在就会用 : 加个数字挑行,? 加文字搜索,:wq 保存退出,ZZ 没修改看一眼的文件直接退出,:q! 修改了但不想保存并退出,dd 删掉一行,i 插入。写点简单的都够用了。
对了,一旦某一天用 vim 用多了,我就习惯性地在 IDE 里先按下 Esc ,然后莫名在某个地方输入了 :wq ,之前老是保存这个东西。 |
40
ETiV 2023-02-06 12:52:57 +08:00 via iPhone
哦对 GitHub 上可以搜到一个 server 用的 vimrc 配置文件,我现在在用这个(稍微改了一下)。
里面预置了不少快捷键,比如可以在 input mode 用 F2 切换 :set paste 啥的,都是超级实用的东西 |
41
ETiV 2023-02-06 12:56:43 +08:00 via iPhone 1
|
42
ChengLuffy 2023-02-06 13:02:57 +08:00 3
set mouse=a
在终端 vim 中使用鼠标 |
43
geebos 2023-02-06 13:03:02 +08:00
学到了,我一直是 b 移到头部再 cw
|
44
guss0x625 2023-02-06 13:14:00 +08:00
.......
|
45
Longerrrr 2023-02-06 13:22:13 +08:00 2
ctrl + v 进入竖编辑模式
选择一列数字 ctrl + a 选择的数字会递增 |
46
Longerrrr 2023-02-06 13:23:21 +08:00 1
漏了个, 选中后按 g ( globaly) 再 ctrl + a
|
47
654656413245 2023-02-06 13:33:28 +08:00
:wq 保存并退出,无论有无修改均更新时间戳
:x 保存并退出,无修改时不更新时间戳 |
48
derek80 2023-02-06 13:44:56 +08:00 1
Ctrl + o 的确用的最多。楼上好多没用过的命令,大家有没有汇总的手册可以随时查的?
|
49
lopda 2023-02-06 13:52:23 +08:00
e~请查阅《 Vim 实用技巧》😂
|
50
opengps 2023-02-06 14:28:42 +08:00
不应该是 Ctrl+C ,Ctrl+Q 吗?从 win 过来的新人都会犯的错误
|
51
akring OP @derek80 一般也就是参考 Vim Cheat Sheet 之类的,但总会有一些没涉及到的奇技淫巧,所以想看看大家分享
|
52
FaiChou 2023-02-06 15:06:42 +08:00 1
cs"' change suround "" to ''
|
53
windy0925 2023-02-06 15:14:04 +08:00
.
|
54
Ingo 2023-02-06 15:14:28 +08:00 1
ZZ 保存并退出当前 buffer 。
|
55
windy0925 2023-02-06 15:14:46 +08:00
敲错了直接发出去了。接上一条,就是.这个命令
|
56
xuminzhong 2023-02-06 15:17:44 +08:00
@JackieMe 感谢,挺有用的,Got 。
|
57
wangerka 2023-02-06 15:18:08 +08:00 4
|
58
notgoda 2023-02-06 16:50:24 +08:00 via iPhone
@Sainnhepark 你好,请问 ctrl -c 是进入视觉编辑模式? 然后要怎么选中某一块文字呢?除了用鼠标之外
|
59
notgoda 2023-02-06 16:57:21 +08:00 via iPhone
@Sainnhepark
@akring 请问大家在 vim 怎么选中某一块文字?是先 CTRL-v 进入进入视觉编辑模式? 然后要怎么选中?除了用鼠标之外。复制是用什么快捷键呢? +yy 只能复制当前行 |
60
xiaket 2023-02-06 17:11:59 +08:00
宏然后批量 apply
|
61
lewis0xx001 2023-02-06 17:26:27 +08:00
@szyp 66666~
|
62
webcape233 2023-02-06 17:32:36 +08:00 via iPhone
进入 visual block 模式
向下按多行 键入 shift i 增删一些东西 按两下 esc 完成了多行编辑 |
63
testcase1 2023-02-06 17:34:01 +08:00
gv
|
64
Sainnhepark 2023-02-06 17:35:57 +08:00 via Android
@notgoda hjkl 或方向键呀,你怎么在 visual mode 选的就怎么选呗
|
65
testcase1 2023-02-06 17:36:01 +08:00
help substitute
|
67
testcase1 2023-02-06 17:41:12 +08:00
vim.keymap.set("n", "j", "gj", opt)
vim.keymap.set("n", "k", "gk", opt) |
68
testcase1 2023-02-06 17:42:40 +08:00
最后 最牛逼的 vim 命令 : nvim
|
69
ljpCN 2023-02-06 17:53:10 +08:00
参见 vim cheat sheet: https://www.vimcheatsheet.com/
|
70
bjzhush 2023-02-06 18:08:09 +08:00
说真的,现在看到这些命令都需要思考下才能明白了,但是我用起来一点问题没有,因为已经都是下意识操作了,十几年了
|
71
superrichman 2023-02-06 18:19:17 +08:00 via Android
那一定是 ctrl q, 因为 vim 里习惯性按到 ctrl s 就死了 🐶
|
72
mangoDB 2023-02-06 18:26:27 +08:00
%s/foo/bar/g
replace 功能 |
73
simo 2023-02-06 18:30:24 +08:00
qa -> q -> n@a
|
74
Al0rid4l 2023-02-06 19:30:59 +08:00
gg=G
|
75
kergee 2023-02-06 19:37:01 +08:00
加密 :X(大写的 X)
16 进制显示 :%!xxd |
76
techstay 2023-02-06 19:43:56 +08:00
浏览器常驻页面,忘了什么就在点进去看看 https://github.com/techstay/awesome-cheatsheets/blob/master/editors/vim.txt
|
77
gogorush 2023-02-06 20:43:33 +08:00
yi 某个符号或者 w 。
w 代表当前的 word 某个符号代表某个符号限定范围内,特别适合复制“”,‘’这个符号内的内容 |
78
0xLittleFi 2023-02-06 20:46:44 +08:00 1
viw 选中单词
vi) 选中 '()'内的东西 同理:vi} 大括号 f 搜索 fb fa 选中右边第一个 b a 字母 ; 重复执行之前输入过的流程 比如 fb ; ; ; ; 一直搜索后面的 b 字母 |
79
dorothyREN 2023-02-06 20:53:56 +08:00
@jorneyr #9 我选择 SHIFT+ZZ
|
80
macscsbf 2023-02-06 21:49:45 +08:00
看《 vim 使用技巧》在学习中
|
81
nag 2023-02-06 22:44:14 +08:00
分享下我的 vimrc 的几个配置
直接在 Normal 和 Visual 模式下直接用 Tab 和 Shift-Tab 缩进,这样就不用先进入 Insert 模式再按 tab: nmap <tab> v> nmap <s-tab> v< vmap <tab> >gv vmap <s-tab> <gv 按下 <leader>W 可以清除当前文件每一行中的最后的空格: nnoremap <leader>W :%s/\s\+$//<cr>:let @/=''<CR> |
82
ns09005264 2023-02-07 00:05:39 +08:00
宏,vim 最强大的特性。
|
83
sanebow 2023-02-07 00:44:38 +08:00 via iPhone
来说个简单好用的,xp ,当两个字符前后打反时可以调换过来,比如 mian -> main
|
85
pooorguy 2023-02-07 09:52:38 +08:00
|
86
gw4gw 2023-02-07 10:50:40 +08:00
进来学技能
|
87
xujiabin 2023-02-07 11:02:34 +08:00
vep, 替换 word(从剪贴板)
|
88
wisetc 2023-02-07 12:54:08 +08:00
:x close
|
89
likeme 2023-02-07 18:21:15 +08:00
很少用 vim 了。。改文件都是用 idea 打开再上传 hhh
|
90
Bingchunmoli 2023-02-07 18:58:21 +08:00 via Android
只会 wq ! q 路过,说实话 open wrt 等各种奇怪设备有时 vim 有 bug 有时 nano 有 bug 换着用
|
91
mangoDB 2023-03-09 19:53:39 +08:00
:set nu # 显示行号
:set nonu # 关闭行号 :nohl # 关闭高亮 / 查找 ? 查找(反向) |