Vim 学习笔记
看到妃神的操作效率之后有了干vim的信心…(然而妃神用的是emacs)
B4 2019-12
- 移动光标指令
- 0(^) / $ 跳到行首/末
- dd 删除行
- dw 删除word
- 下一个词 w 上一个词b
- /word_to_search: search ffoward
- 然后再按n 表示下一个
- ?word_to_search: search_backward
- 然后再按n 表示下一个
- L(大写)屏幕的底行 M中间 H顶端
- G 文尾 gg 文章开始 ngg到第N行
- 向下翻页 ctrl+f 半页crtl+d
- 向上 ctrl+b crtl+u
- 批量缩进
- 先用v进行块选中,再用shift+> 进行缩进调整
- 正常是i是在当前光标插入,I在行的前面插入,A在行的最后面插入,o是在下一行开头插入
- 查找匹配的括号: 光标放在括号上面,按“%”
- 替换指令(类似rename)
- s/AAA/BBB 第一个
%s/old/new/g(c)
直接替换全局(带c会询问)(注意前面那个%必须要加)
- yy复制一行,P粘贴(不需要进入输入模式,进入输入模式之后CRTL+SHIFT+V粘贴)
- 按下V,然后上下箭头可以选中一定范围,然后y表示复制这一段,p表示粘贴
- d表示剪切
- u撤销,U撤销撤销
- 在插入模式中,其实CTRL+N是自动补全
- CTRL+O 跳转到上次修改
2019-12-8
- %在括号之间跳跃
- 多行注释 (比较复杂)
- 首先CTRL+V进入可视模式(Visual Mode)
- 然后在行首往下移动,选中所有
- SHIFT+I进行输入,输入一个值
- 按ESC之后会发现所有行的开始都加上了那个值
- 部分替换
- 先用CTRL+V的Visual模式选中一个部分
- ”:”进入命令行并且
s/AAA/BBB
2019-12-11
- 检查自己的vim有没有安装clipboard
vim --version | grep clipboard
如果前面是个”-“那么就没有- 安装一下(用apt-get就好) vim-gtk, vim-gnome, vim-scripts
- 与系统剪贴板沟通的默认方式是
"+y
- 自己映射快捷键,在vimrc中
- 注意其中
"
是注释
- 注意其中
inormap <C-j> <Esc>o
2019-12-24
- 删除一个字母
dw
- 删除到行尾
d$
- 删除到开头
d0
2019-12-25
- 最近发现vim关闭很慢,搜索了一些内容之后没解决问题
- 今天逐渐发现并不是关闭慢,而是保存慢(这个现象只在eva10上出现就很奇妙)
- 今天禁用了Synaptics插件之后好像暂时解决了这个问题,具体情况未知
2019-12-27
- 在Vim中打开其他文件
:e $FILENAME
- 在EVA10上使用System Clipboard出现了问题,暂时通过修改vimrc之后解决了,具体原因暂时还是未知,后续有时间看一下
- 现在有的时候貌似还是会出现剪贴板对不上的问题,可以通过
:register
查看一下自己想要的东西在哪个剪贴板,然后"0p
的形式
- 现在有的时候貌似还是会出现剪贴板对不上的问题,可以通过
2019-12-31
- 研究了很久Vim的CLipboard的问题
- 发现了首先远程服务器和系统剪贴板之间有问题,需要X11 Forwarding,而我们的服务器好像不大有
- 另外直接粘贴好像也有一些问题(WSL和Win之间可能还有Gap)
- 目前通过Tmux可以解决
2020-01-02
- 孙博提到了,在远程服务器多文件之间用Vim复制内容可以直接用同一个vim打开多个文件,然后直接用内部Buffer
但是和本机之间还是没有找到好的办法
:vs [file] 垂直分屏 / :sv [file]水平
- CTRL+W&V也可做到垂直分屏
- 分屏之后用CTRL+W&HJKL来移动
- ```:e`` 是关闭当前文件并且编辑新的文件
:Vex
垂直打开一个文件夹浏览
2020-01-08
- 无意发现了
~
可以让当前字母大写
2020-03-09
- 多行注释是CTRL V然后I然后输入然后Esc
- 取消多行注释是CTRL V然后选中要删除的,然后d
2020-09-03
- 发掘了nerdtree插件的使用姿势
-
- 目前在cfg中配置的shortcut是
nt
,输入nt可以在左边直接打开tree目录 - 对于这个key-map的几种方式目前还没有搞清楚…
- 目前在cfg中配置的shortcut是
- 当光标在nerdtree中的时候
- 回车可直接打开文件,并且光标跳转到文件中 - 等效于使用o
- I可以直接split窗口并且打开文件, S则是Vsplit(横着两个)
- 如果不想让光标跳转到文件中(比如需要打开多个文件),可以在O/I/S前面加上g
- 使用r去刷新文件目录
- NerdTree使用攻略
2020-09-11
- c是替换指令
- cw - 替换一个单词(从光标开始处往后,遇到空格,-等之类的表示分割的就会停下)
- ci) - 替换()内部的内容
- caw) - 删除整个()
- e 表示jump到单词的末尾
2020-09-14
- 回退过头之后用CTRL+R回复,注意不要保存了
2020-09-25
- 输入括号之后让光标在中间
imap ()<Left>
-
在一个单词上面加上括号
bcw()<Esc>p
- also, check for error about git diff
no new line at end of file
- Shift+T 开启新tab(在我的vimrc中这样设置了)
- gt进入下一个tab
2020-10-08
- 向后删除到某个字符
dt$CHAR
- 从光标之前的$CHAR删除到$CHAR
2020-01-13
- 强制保存修改readonly的文件
:w !sudo tee %
- 可以在vimrc中写一个替换
cmap w!! w !sudo tee > /dev/null %
- 可以在vimrc中写一个替换
2020-10-18
- vim粘贴时候每行缩进,通过在vim框子
:set nosmartindent | :set noautoindent
- 然后粘贴的时候可能就只有一点minor的格式问题
- 但是每次都这样好像有点麻烦,所以可以利用vim中的paste模式,在vimrc中添加
set pastetoggle=<F12>
- 这样就可以通过F12进入paste模式,粘贴就正常了,再用F12就退出
2020-11-22
- 今天突然发现vim搜索高亮所有结果应该是
set hls
,写在vimrc的前面貌似没用(不知道是哪里冲突了)-
- 实际上是这一行disable了search过程当中的高亮
- 放到最后之后正常了,甚至之前的向后搜索n缓慢也解决了。迷惑
-
-
Vim中的默认
<Leader>
指的是“\”按键 - Vundle中添加了新的插件 - NerdComment - 优化的comment插件
Plugin 'scrooloose/nerdcommenter'
- 配置 -
let g:NERDSpaceDelims=1
,在注释的时候自动添加空格 - 使用方法
-
cc - 添加注释 -
cu - 取消注释 -
c - 自动判断是加还是去注释 -
cA - 在行尾添加注释 -
cs - 块注释
-
2020-11-28
- 采用vimdiff命令来合并内容
vimdiff v1.py v2.py
2020-12-3
2020-12-20
- 发现win下的文件用vim打开每行最后会有一个^M,貌似是对换行符解析的问题
2021-3-20
concerninig tab & spaces for python
- space不会自己显示,通过在vimrc中添加内容来明确指示哪里是Tab
set list; set listchars=tab:>-
- 由于我们之前在vim设置中设置了自动将键盘输入的tab换成4个spaces:
set tabstop=4 " 一个tab显示出多少个字符的长度,默认8
set softtabstop=4 “ insert mode按一下tab时候缩小的长度
set shiftwidth=4 ” 每一级别缩进的长度
set expandtab “ 设置的时候用空格来等效缩进(star)
- 但是由于网上clone下来的代码可能使用的是tab,我们可以输入
:retab
来重新批量替
2023-06-01 Relearn Vim
- 在normal mode中直接
ZZ
退出with saving,ZQ
force quit - 删除至行末
D
zt
&zb
将当前行置为顶/底- 用
a
进入insert mode会在当前单词的第一个字母之后 w/e
在单词之间移动,是头还是尾dw
直接删除到了下个单词开头,但是de
删除到这个单词结尾(保留了之间的空格)
3dd
删除三行di(
删除括号内部的,da{
包括括号U
undo all- 命令
:earlier 10m
,回到10min之前的状态 %
在括号之间跳转:!
后面添加linux command