terminal 常用快捷键:
ctrl + shift +X:最大化某个窗口 或恢复
ctrl + page up/down: 切换tab
https://blog.youkuaiyun.com/iceman1952/article/details/109256515
http://blog.youkuaiyun.com/love__coder/article/details/6739670
行首或行尾添加
行首 :%s/^/your_word/
行尾 :%s/$/your_word/
按键操作:
注释:ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如”#”,再按Esc,就会全部注释了。
删除:先按v,进入visual模式,横向选中列的个数(如”#”注释符号,需要选中两列),再按Esc,再按ctrl+v 进入列编辑模式,向下或向上移动光标,选中注释部分,然后按d, 就会删除注释符号(#)。
PS:当然不一定是shell的注释符”#”,也可以是”//”,或者其他任意的字符;vim才不知道什么是注释符呢,都是字符而已。
使用替换命令:
在全部内容的行首添加//号注释
:% s/^/\/\//g
在2~50行首添加//号注释
:2,50 s/^/\/\//g
在2~50行首删除//号
:2,50 s/^\/\///g
vim 查找区分大小写
:set ic (ignore case) 忽略大小写
:set noic 不忽略大小写
输入了上述指令, 当每次的查找操作都会受到当前设定的影响,不过每次在退出vim编辑后,再重新打开以后的设置仍旧失效。
第二种方法
/\CWord : 区分大小写的查找
/\cword : 不区分大小写的查找
这个操作针对当前的查找有效, 所以不必考虑下次查找操作是否会受到影响.
查找到之后,用n寻找下一个查找结果,N寻找上一个查找结果
---------------------
一、如果在终端中开没有打开vim,可以:
横向分割显示:
$ vim -o filename1 filename2
纵向分割显示:
$ vim -O filename1 filename2
二、如果已经用vim打开了一个文件,想要在窗口中同时再打开另一个文件:
横向分割显示:
:vs filename
纵向分割显示:
:sp filename
其中,vs可以用vsplit替换,sp可以用split替换。
如果finename不存在,则会新建该文件并打开。
光标移动
上:k
下:j
左:l 『字母L小写』
右:h
上一行行首:- 『减号』
下一行行首:+
行首:0 『数字0』
行尾:$
单词词尾或后一个单词词尾:e
后一个单词词首:w
单词词首或前一个单词词首:b
跳转到特定行::行号 ( :5 :跳转到第5行 )
上一屏:ctrl + b
下一屏:ctrl + f
上半屏:ctrl + u
下半屏:ctrl + d
向上滚屏:ctr + y
向下滚屏:ctr + e
跳到文件头:gg
跳到文件尾:G
2、搜索
向后模式搜索:/ + 搜索模式
向前模式搜索:?+ 搜索模式
注意:结合n和N向前向后查找
3、追加或插入
光标右侧追加:a
光标行尾追加:A
光标左侧追加:i
光标行首追加:I 『i 的大写』
光标下方插入行:o 【字母o】
光标上方插入行:O 【字母o的大写】
n到m行行首插入#: :n,m s/^/#/g 『1到5行,行首插入wow :1,3 s/^/wow/g 』
n到m+l行行首插入#: :n,+l s/^/#/g『1到6行,行首插入# :1,+5 s/^/#/g 』
4、删除
删除光标:x
删除光标左侧:X
删除光标所在的单词:dw
删除当前行:dd
删除光标至行尾:d$或D
删除当前行及以下n-1行:ndd 『n是数字,是要删除的行数』
删除n到m行: :n,m d 『删除1到3行 :1,3 d』 当m 用$ 时,表示到文档尾
5、复制粘贴
复制光标所在的单词:yw
复制光标至行尾:y$ 或Y
复制当前行:yy
复制行n次:yyn
复制当前行及以下n-1行:nyy『n是数字,是要复制的行数』
复制n到m行,粘贴到k+1行: :n,m co k 『复制1到3行,粘贴到第5行 :1,3 co 4』
剪切n到m行,粘贴到k+1行: :n,m m k 『剪切1到3行,粘贴到第5行 :1,3 m 4』
粘贴到光标下:p
粘贴到光标上:P
6、撤销回复
7、替换撤销:u
恢复:ctrl + r
替换光标所在的字符:r
替换一个单词:cw
替换光标所在的前一个字符:cb
替换光标至行尾的所有字符:c$
替换当前行:cc
替换当前行的第一个old为new: :s/old/new替换当前行的所有的old为new::s/old/new/g替换当前行到最后行的第一个old为new::.,$s/old/new替换当前行到最后行的所有old为new::.,$s/old/new/g替换第n行到第m行的第一个old为new::n,m s/old/new替换第n行到第m行的所有old为new::n,m s/old/new/g替换所有行的第一个old为new: :%s/old/new
替换所有行的所有old为new: :%s/old/new/g
8、其他
查看当前设置::set all
显示行号::set nu
隐藏行号::set nonu
不保存退出::q
不保存强制退出::q!
保存编辑::w
保存并退出::wq
把两行连接在一起:J
把n行连接在一起:nJ 光标所在行及其下n-1行
执行shell命令::! shell 例如:查看到当前时间::! date
读取shell执行的结果,并把结果放在光标的后面::r!shell 例如:列出目录中的文件::r!ls
简单加密文件::X
vim +n filename 打开文件filename,并且把光标置于第n行行首
vim + filename 打开文件filename,并把光标置于最后一行行首
vim +/pattern filename 打开文件,并把光标置于第一个与pattern匹配的串行
vim -r filename 在上次vim崩溃处恢复filename
用过Ultraedit的朋友一定使用过一种搜索功能,就是可以把搜索的所有行列表出来。如下图所示:
其实Vim也可以做到这个功能,就是使用quickfix窗口,具体方法如下。
[1]首先,使用vimgrep命令查找所有的结果
:vimgrep /pattern/ %
在当前文件中查找pattern,这个pattern支持正则表达式
[2]然后使用命令
:copen
就可以得到搜索列表了,用鼠标点击就可以到对应的行。
如果不能用鼠标,也没关系,可以用Ctrl-w,Ctrl-w跳转到quickfix窗口,然后用移动命令走到对应的搜索行,然后用命令
:.cc就可以调到对应的搜索行了。
Vim列操作模式
有些情况列操作模式很有用,如:把其中的 "," 删除 或者把空格替换为"," python中的 narray的元素间是空格而C语音的数组的元素间是“,”
{
4.73689735e-01, -1.55774403e+00, -3.69617969e-01, -2.35297307e-01,
-1.67827189e+00, -7.64885724e-01, -2.84404635e-01, -8.46990585e-01,
---
}
在 Vim 命令模式下,移动游标定位于某一个位置,键入 ctrl-v后状态栏上出现 VISUAL BLOCK 字样,即进入纵向编辑模式。移动游标以按需选择待编辑的区域。
- 列删除
d删除 - 列插入
I 进入行首插入模式
ESC退出