「VIM」vim操作学习
从今天开始, 每天做palab的同时学习一下vim, 同时记下笔记
(这大概是我第4次下决心转vim了, 前三次都失败了…)
本来打算放在每天的palab中, 后面想到应该时常会来翻翻, 分散放不方便, 干脆提出来作为一个文件
sublime中vim的配置
sublime内置vintage
支持vim操作, 只需要在preferences-settings
中将之加入即可, 同时为了支持vim中的ctrl, 加入如下两行
1 |
|
插件: Vintageous
安装该插件后支持Ex模式
vscode中vim的配置
基本编辑模式
i
, a
: “左插入”, “右插入”
I
: 到行首插入
A
: 在行尾插入
o
: 下一行插入
O
: 上一行插入
s
: 删除后插入
S
: 删除本行后插入
cc
: 同S
c
+ text-object
: text-object见下文
gi
: 跳到上次编辑的位置进行编辑
vim中的text object
text-object:可以指一个单词,一整句文本,抑或一对括号内的文本
test-object主要涉及到范围和操作
范围主要有:
范围 | 解释 |
---|---|
i |
inner |
a |
around |
( , [ , " , { , ' , < |
各种括号 |
文本对象主要有:
文本对象 | 解释 |
---|---|
w |
word |
s |
sentence |
p |
paragraph |
两个基本的text object
text-object | 含义 |
---|---|
iw |
inner word : 当前单词 |
aw |
a word : 当前单词, 包含后面的空格 |
同时还支持对各种括号和引号块包括()
,<>
,{}
,[]
,""
,''
进行操作
注意操作的时候可以在block内部任意处输入命令.
根据上述说明, 有几个常用的操作可以总结如下:
1 |
|
复制黏贴
除了以下这些指令, 需要配合上面的text-object
使用出更高效的用法
操作 | 功能 |
---|---|
y |
复制 |
P |
黏贴(前) |
p |
黏贴(后)(最后一次y 复制或者删除的内容) |
"0p |
黏贴最后一次用y 复制的内容 |
yy |
复制一行 |
ctrl+r + 0 |
插入模式下的黏贴 |
各种跳转-如何起飞
vim中我认为最酷的事情就是在各段间飞来飞去, 如果只满足于hjkl
和home
, end
, 那还不如我亲爱的caps-lock+
好用呢, (话说我现在用了vim上下左右也不是用的hjkl, 而是caps+wasd
)
下面的命令可能不全, 都是我自己试了的, 以后慢慢补充.
我把这些操作分为”行内乱飞“, “全文乱飞“, “带查找的乱飞“三部分
行内乱飞
操作 | 功能 |
---|---|
w/W |
下一单词首 |
b/B |
上一单词首 |
e/E |
当前词尾 |
ge/gE |
上一词尾 |
0 |
移到”hard”行首 (每一行顶格) |
^ |
移到”soft”行首 (每一行第一个”字”) (等价于0w , 但是后者更好按, ^ 的位置实在是太奇葩了) |
$ / g_ |
移动到行尾 / 移动到最后一个非空字符 |
全文乱飞
操作 | 功能 |
---|---|
gg | 全文首 |
G | 全文尾 |
数字 +G / :数字 |
移动到数字 行 |
ctrl +u / ctrl +d |
向上 / 向下翻半页 (up / down) |
ctrl +b / ctrl +f |
向上 / 向下翻一页(back / forward) |
H / M / L |
页面不动, 调整光标到 上 / 中 / 下 位置 (HIGH / LOW /MID) |
ctrl + e / ctrl + y |
光标不动, 页面向上 / 向下 移动一行 |
zt / zz / zb |
光标不动, 页面移动到上 / 中 / 下 位置 (top/ *center /bottom) |
m +a-zA-Z — ' + a-zA-Z |
通过m 进行行标记, 然后用' 进行标记跳转 (跳转到行首) |
带查找的乱飞
一开始我发现我的fFtT
和操作不一样, 我还以为我的vim出问题了, 原来是我装了https://github.com/rhysd/clever-f.vim这个插件…
所以插件最好还是知道自己装了什么, 不然到时候发生冲突你都不知道发生了啥
操作 | 功能 |
---|---|
* |
正向全文查找光标当前所在单词 (n 向下翻阅) |
# |
反向全文查找光标当前所在单词 (n 向上翻阅) |
f + 字符 |
(当前行)查找该字符 |
F + 字符 |
(当前行)与上面相反 |
t + 字符 |
(当前行)查找该字符的”前一个字符” |
T + 字符 |
(当前行)与上面相反 |
; / , |
正向 / 反向查找 |
/ |
查找 (:noh 取消搜索高亮) |
? |
反向查找 |
n |
配合查找使用, 跳到下一个 |
gn |
跳到并选中下一个 |
:%s/查找内容/替换内容/g |
全文替换 |
:%s/查找内容/替换内容/gi |
全文替换, 大小写不敏感 |
:%s/查找内容/替换内容/gI |
全文替换, 大小写敏感 |
:s/查找内容/替换内容/g |
当前行替换 |
:%s/查找内容/替换内容/gc |
带确认的替换(y/n/a/q/l/^E/^Y 分别为yes/no/all/quit/last ) (确认, 取消, 剩下的全部换了, 退出, 换完这个再退出), ^E 和^Y表示 ctrl + E, ctrl + Y可以向下 / 向上翻滚一行 |
:n1,n2s/查找内容/替换内容/g |
[n1,n2] 行替换 |
如何安装和管理插件
使用Vundle
我目前for c++
目前安装的插件有:
插件 | 功能 |
---|---|
auto-pairs |
括号补全 |
autoformat |
自动格式化 |
附: zsh快捷键
⌃ + u:清空当前行
⌃ + a:移动到行首
⌃ + e:移动到行尾
⌃ + f:向前移动
⌃ + b:向后移动
⌃ + p:上一条命令
⌃ + n:下一条命令
⌃ + r:搜索历史命令
⌃ + y:召回最近用命令删除的文字
⌃ + h:删除光标之前的字符
⌃ + d:删除光标所指的字符
⌃ + w:删除光标之前的单词
⌃ + k:删除从光标到行尾的内容
⌃ + t:交换光标和之前的字符
附 vimrc配置
1 |
|
surround和easy-motion
我觉得vim最牛逼的两个插件
easy-motion使用
<leader><leader>[jkhlbew..]
surround使用
操作 | 说明 |
---|---|
ds | 删除一个配对符号 (delete a surrounding) |
cs | 更改一个配对符号 (change a surrounding) |
ys | 增加一个配对符号 (yank a surrounding) |
S | 可视化v 模式下, 选中后加配对符号 |
example:
Jetbrains系配置vim
首先安装两个个插件:
ideavim
vim-easymotion
(同时安装acejump
)
在C:/user/yourname/
下创建.ideavimrc
配置如下:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!