剪切
说完了复制这里顺便把剪切的命令也说下
其实剪切很简单,就是先删除,然后按p粘帖
比如dd删除一行后,这一行会被放入缓冲区
接着移动到你想放置的位置,按p,就被粘帖好了
恢复在VIM里比较简单,不过想要具体恢复到某个时间段很难
就我的经验而言,有时候使用恢复还不如删了重写
这里我们来讲讲恢复、撤销和重复命令的使用
u 撤消上次命令
U 恢复整行
ctrl+r 重做
. 重复
e! 全文恢复
如果有使用office的经验,那么这里的撤销和重做应该很好理解
比如我用dw删除一个单词,按下u就会回到没删除之前
一旦我后悔了,ctrl+r便会重新删除一次
其中U也十分好用,它能恢复本行内容,无论你在本行做过什么
需要注意的是,你不能在别处操作多次后再回到那一行来恢复
接着.号能够重复你上次命令
比如dd删除一行,你接着按一次.就相当于重新使用一次dd命令
如果你按5.那就是重复dd5次了
最后e!就牛逼了,当你把代码写的无比凌乱之时
它能恢复到最初形态,只要你还没使用过w、wp或x保存
Vim 添加注释 详解
一、手注释动 vim下
1.插入注释:按Ctrl+v进入virtual模式
用上下键选中需要注释的行数
按大些“I”进入插入模式,输入注释符“#”,
然后立刻按下ESC(两下)
2.删除注释先按v进入列模式横向选中列的个数(如"/ /"注释符号,需要选中两列),
再按Esc 再按ctrl+v 进入列编辑模式,向下或向上移动光标按x、d键删除
vim 从 vim7 开始加入了多标签切换的功能, 相当于多窗口.
之前的版本虽然也有多文件编辑功能, 但是总之不如这个方便啦。
用法
:tabnew [++opt选项] [+cmd] 文件 建立对指定文件新的tab
:tabc 关闭当前的tab
:tabo 关闭所有其他的tab
:tabs 查看所有打开的tab
:tabp 前一个
:tabn 后一个
标准模式下:
gt , gT 可以直接在tab之间切换。
还有很多他命令, 看官大人自己, :help table 吧。
看过Swaroop的书之后,就越来越喜欢VIm了。
尤其是多窗口,真是非常Cool哦~
解释一下这是咋弄出来的:
在Vim中开多窗口其实比较简单,也有不只一种方法,直接使用命令:new默认就是打开一个水平分割的新窗口。另外一个命令就是:split(sp)。
但是默认水平分割多少有点不爽,因为本来屏幕就是宽屏的,代码几乎不会写那么长了,而真正缺少的垂直空间,所以这个时候就要用到垂直分割了,命令是:vsplit(vs),很简单了一目了然。
打开了这么多窗口不知道如何切换肯定不行啦。切换也很简单,组合键ctrl+w,然后通过j/k,来定位窗口,注意看好窗口光标变化。不过个人感觉这样比较麻烦,每切换一次窗口都要先按组合键才行。还好还有另一种方法,那就是直接连续按两次ctrl+w组合键,vim会自动跳到下一个窗口。
另外更改窗口宽度的命令是: Crtl+w > 将当前窗口向右边扩展一行,将 > 换成 < 就是向左边扩展一行。也可以在之前使用数字代表扩展的行数, 5 Ctrl+w > ,向右边扩展5行。
更改窗口高度类似,只是命令是Ctrl+w + ,增加高度,- 减小高度。
1、打开多个窗口
打开多个窗口的命令以下几个:
横向切割窗口
:new+窗口名(保存后就是文件名)
:split+窗口名,也可以简写为:sp+窗口名
纵向切割窗口名
:vsplit+窗口名,也可以简写为:vsp+窗口名
2、关闭多窗口
可以用:q!,也可以使用:close,最后一个窗口不能使用close关闭。使用close只是暂时关闭窗口,其内容还在缓存中,只有使用q!、w!或x才能真能退出。
:tabc 关闭当前窗口
:tabo 关闭所有窗口
3、窗口切换
:ctrl+w+j/k,通过j/k可以上下切换,或者:ctrl+w加上下左右键,还可以通过快速双击ctrl+w依次切换窗口。
4、窗口大小调整
纵向调整
:ctrl+w + 纵向扩大(行数增加)
:ctrl+w - 纵向缩小 (行数减少)
:res(ize) num 例如::res 5,显示行数调整为5行
:res(ize)+num 把当前窗口高度增加num行
:res(ize)-num 把当前窗口高度减少num行
横向调整
:vertical res(ize) num 指定当前窗口为num列
:vertical res(ize)+num 把当前窗口增加num列
:vertical res(ize)-num 把当前窗口减少num列
5、给窗口重命名
:f file
6、vi打开多文件
vi a b c
:n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件
:e# 回到刚才编辑的文件
7、文件浏览
:Ex 开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
:Sex 水平分割当前窗口,并在一个窗口中开启目录浏览器
:ls 显示当前buffer情况
8、vi与shell切换
:shell 可以在不关闭vi的情况下切换到shell命令行
:exit 从shell回到vi
from:http://hi.baidu.com/dtzw/blog/item/64a6f3f2fc10721eb07ec590.html
vim是个优秀的编辑器,有很多功能你不知道。
比方说vim可以模拟多窗口(多tab)以及拆分窗口,可以同时编辑多个文件。
多tab时,每个tab可以编辑一个文件,但不同的tab不能同时显示,要切换。
拆分窗口后,窗口是同时显示的,每个窗口可以编辑一个文件。
两种方式可以同时生效的,现在试一下:
命令模式:输入sp,窗口就上下拆分成两个窗口了。
按ctrl+w然后再按c,就关掉当前窗口了。
连按两次ctrl+w,可以在窗口间切换。
输入vs,就是垂直拆分。
也可以多tab,输入命令tabnew,就创建一个新tab,命令tabn就切换到下一个tab,tabn3就切换到第三个tab,tabc就关掉当前tab。
具体看vim的手册,或者vim里help 某个命令。
vim 从 vim7 开始加入了多标签切换的功能, 相当于多窗口.
之前的版本虽然也有多文件编辑功能, 但是总之不如这个方便啦。
用法
:tabnew [++opt选项] [+cmd] 文件 建立对指定文件新的tab
:tabc 关闭当前的tab
:tabo 关闭所有其他的tab
:tabs 查看所有打开的tab
:tabp 前一个
:tabn 后一个
标准模式下:
gt , gT 可以直接在tab之间切换。
还有很多他命令, 看官大人自己, :help table 吧。
看过Swaroop的书之后,就越来越喜欢VIm了。
尤其是多窗口,真是非常Cool哦~
解释一下这是咋弄出来的:
在Vim中开多窗口其实比较简单,也有不只一种方法,直接使用命令:new默认就是打开一个水平分割的新窗口。另外一个命令就是:split(sp)。
但是默认水平分割多少有点不爽,因为本来屏幕就是宽屏的,代码几乎不会写那么长了,而真正缺少的垂直空间,所以这个时候就要用到垂直分割了,命令是:vsplit(vs),很简单了一目了然。
打开了这么多窗口不知道如何切换肯定不行啦。切换也很简单,组合键ctrl+w,然后通过j/k,来定位窗口,注意看好窗口光标变化。不过个人感觉这样比较麻烦,每切换一次窗口都要先按组合键才行。还好还有另一种方法,那就是直接连续按两次ctrl+w组合键,vim会自动跳到下一个窗口。
另外更改窗口宽度的命令是: Crtl+w > 将当前窗口向右边扩展一行,将 > 换成 < 就是向左边扩展一行。也可以在之前使用数字代表扩展的行数, 5 Ctrl+w > ,向右边扩展5行。
更改窗口高度类似,只是命令是Ctrl+w + ,增加高度,- 减小高度。
VIM 标签页 (tab)
新建标签页
使用:tabe命令和文件名参数,可以在新标签页中打开指定的文件。也可以使用:tabnew命令,在新标签页中编辑新的文件。命令:tab split将在新标签页中,打开当前缓冲区中的文件。
命令:tabf允许你在当前目录搜索文件,并在新标签页中打开。比如我想打开当前目录下的img.txt文件,那么就可以使用:tabf img.*命令。请注意,此命令只能打开一个文件,如果搜索出多个匹配文件,将提示你“文件名过多”,这时你需要给出更精确的搜索条件以打开文件。
Vim默认最多只能打开10个标签页。你可以用set tabpagemax=15改变这个限制。
列示标签页
命令:tabs可以显示已打开标签页的列表,并用“>”标识出当前页面,用“+”标识出已更改的页面。
关闭标签页
命令:tabc可以关闭当前标签页。而命令:tabo将关闭所有的标签页。
切换标签页
命令:tabn或gt可以移动到下一个标签页。而命令:tabp或gT将移动到上一个标签页。如果已经到达最后面或最前面的标签页,将会自动转向循环。
如果你打开了很多标签页,那么可以使用:tabfirst或:tabr命令,移动到第一个标签页。使用:tablast命令,移动到最后一个标签页。
移动标签页
如果你希望按照指定的次序排列标签页,那么你可以使用:tabm命令。请注意,标签页次序是从0开始计数的。比如命令:tabm 1将把当前标签页移动到第2的位置。如果你没有为:tabm命令指定参数,那么当前标签页将会被移动到最后。
配置标签页
默认情况下,只有用户新建了标签页才会在窗口上方显示标签栏,这是由选项set showtabline=1决定的。如果我们希望总是显示标签栏,那么可以用set showtabline=2命令来设置。如果我们希望完全不显示标签栏,那么可以使用set showtabline=0来设置。
多标签页命令
使用:tabdo命令,我们可以同时在多个标签页中执行命令。比如我们打开了多个标签页,需要把这些文件中的“food”都替换成“drink”,那么就可以使用:tabdo %s/food/drink/g命令,一次完成对所有文件的替换操作,而不用针对每个文件重复操作。
图形界面
如果你使用的是带有图形界面的gVim,那么新建、关闭和打开标签页的操作,都可以通过在标签页上右击鼠标完成。只需要点击相应标签,就可以在不同的标签页间切换。
通过:help tab-page-intro命令,可以获得关于标签页使用的更多信息。
命令小结
:tabnew 新建标签页
:tabs 显示已打开标签页的列表
:tabc 关闭当前标签页
:tabn 移动到下一个标签页
:tabp 移动到上一个标签页
:tabfirst 移动到第一个标签页
:tablast 移动到最后一个标签页
http://www.webinno.cn/blog/article/view/44
在 vi 中, 移动光标和编辑是两件事, 正因为区分开来, 所以可以很方便的进行光标定位和编辑. 因此能更快一点移动光标是很有用的.文中的c-表示ctrl,大小写敏感。光标定位还需结合搜索。
=== 光标定位 ==
h或^h 向左移一个字符
j或^j或^n 向下移一行
k或^p 向上移一行
l或空格 向右移一个字符
w 移到下一个字的开头
W 移到下一个字的开头,忽略标点符号。默认的情况下W认为字符串时已空格分开的。
cp /mnt/marvell/main.sh /stv/
所以上面一行在W的选择下只有三个字符串,即 1 cp 2 /mnt/marvell/main.sh 3 /stv/
这与w时不一样的。
e 移到下一个字的结尾
E 移到下一个字的结尾,忽略标点符号
b 移到前一个字的开头
B 移到前一个字的开头,忽略标点符号同W
| 移到当前行的第一列
0 移到当前行的第一列字符处,会忽略行前的空白。
n| 移到当前行的第n列
^ 移到当前行的第一个非空字符
$ 移到当前行的最后一个字符
return或+ 移到下一行的第一个字符
- 移到前一行的第一个非空字符
L 移到屏幕的最后一行
M 移到屏幕的中间一行
H 移到屏幕的第一行
G 移到文件的最后一行
nG 移到文件的第n行
( 移到句子的开头
) 移到句子的结尾
{ 移到段落的开头 //我用的时候发现{只是移动到前一个空行 }移动到后一个空行首
} 移到下一个段落的开头
/**vim 第一列插入{来定义一个段落 */
[[ 回到段落的开头处
]] 向前移到下一个段落的开头处
m(a-z) 用一个字母来标记当前位置,如用mz表示标记z
'(a-z) 将光标移动到指定的标记,如用'z表示移动到z
'' 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查(此处时两个单引号不是双引号)
找到某个单词后, 再输入此命令则回到上次停留的位置.
'. 此命令相当好使, 它移动光标到上一次的修改行.
`. 此命令相当强大, 它移动光标到上一次的修改点.
% 从大括号的开始移动到大括号的结束位置
: 后边加行号就是跳到这一行
<C-O> 光标返回到以前的位置。相当于光标移动的“撤销”
<C-I> 光标返回到后来的位置。相当于光标移动的“恢复”
=== 屏幕定位 ==
c-e 将屏幕上滚一行
c-y 将屏幕下滚一行
c-u 将屏幕上滚半页
c-d 将屏幕下滚半页
c-b 将屏幕上滚一页
c-f 将屏幕下滚一页
z-return 将当前行置为屏幕的顶行
nz-return 将当前行下的第n行置为屏幕的顶行
z. 将当前行置为屏幕的中央
nz. 将当前行上的第n行置为屏幕的中央
z- 将当前行置为屏幕的底行
nz- 将当前行上的第n行置为屏幕的底行
本文链接:http://www.webinno.cn/blog/article/view/43
最近读了一下Swaroop C H的<A Byte of Vim>,其中涉及到一些Vim命令,总结如下:
命令 说明
7j 将光标下移7行
dw 删除一个单词
* 搜索文件中当前光标所在处的单词
:50,100s/old/new/g 将第50-100行之间的"old"替换为"new"
:sp “分割”视角,同时浏览一个文件的两个不同部分
gf 打开以当前光标处的单词为文件名的文件
:colorscheme desert 更换色彩方案,将色彩方案换为desert
i 将Vim切换到插入模式
<Esc> 将Vim切换到正常模式
:%s/from/to/g 将全文中的"from"全部替换为"to"
:s 表示替换,substitute
:0,10s/from/to/gc 将文本前10行中的"from"替换为"to",并在每次替换之前都要用"yes"和"no"确认,c表示confirmation
<Enter> 所有命令模式下的命令都必须以<Enter>结尾,来通知Vim命令已经结束
:help vim-modes-intro 查看Vim帮助文档中关于模式的介绍
:edit hello.txt/:e hello.txt 编辑hello.txt文件,如果该文件不存在,则新建一个hello.txt文件,
并进入编辑状态
:write/:w 保存刚刚编辑的文件
:quit/:q 关闭当前窗口
:q! 强制关闭当前窗口
:help 查看帮助信息
:help :edit 查看关于 :edit 的帮助信息
:help notation
:help keycodes
:echo "Hello, World!" 回显"Hello, World!"
/hello 搜索"hello",并显示第1个匹配
:help usr_toc 显示参考手册的目录
:help index 显示索引,可以通过在其中搜索感兴趣的话题
/insert mode 显示与插入模式相关的信息
F1 显示帮助
由正常模式进入插入模式的几种方式:
i 将光标移到当前位置前的一个位置,并进入插入模式
I 将光标移动到所在行的行首位置,并进入插入模式
a 将光标移动打当前位置后的一个位置,并进入插入模式
A 将光标移动到所在行的行尾位置,并进入插入模式
o 在所在行之下开辟一个新行,并进入插入模式,光标在新行的行首
O 在所在行之上开辟一个新行,并进入插入模式,光标在新行的行尾
:help inserting 显示关于插入的帮助文档
用于替换的几个命令:
s 删除光标所在处的字符,并进入插入模式,主要用于替换, 其效果和“删除+插入”相同
S 删除光标所在行的所有内容,并进入插入模式,用于整行内容的替换
r "replace",即替换,删除光标所在处的字符,在输入要替换的字符后,自动回到正常模式下
R 多个字符的替换,光标处及之后的单词可以被替换
:help replacing 显示关于替换的帮助文档
b 在光标移动到所在处单词的第一个字母处,如果所在处为空白,则移动到所在处前一个单词的第一个字母
v 由正常模式进入可视模式,以字符为最小选中单位,对内容进行选择
V 由正常模式进入可视模式,以行为最小选中单位,对内容进行选择
c 删除选中的内容,并由可视模式进入插入模式,对选中内容进行修改
5e 移动当前光标,到其后第5的单词的结尾处
w 将光标移动到当前位置之后的单词的开头
3fh 寻找当前行光标之后第 3 次出现 "h" 的位置,将光标置于该处
} 将光标移动到下一段的开头
35j 将光标向下移动35行
ctrl+o 返回移动前光标所在位置
2j 将 j 的 操作重复两次,即向下移动2行
5l 将光标向右移动5次,和操作 l 5次 效果相同
5h 将光标向左移动5次,和操作 h 5次 效果相同
^ 将光标移动到行首
$ 将光标移动到行尾
Ctrl+b 向上移动一个屏幕
Ctrl+f 向下移动一个屏幕
50G 将光标移动到第50行的开头
G 将光标移动到文件的最后一行的行首
1G 将光标移动的文件的第一行的行首
M 将光标移动到第一行的行首
L 将光标移动到最后一行的行首
M 将光标移动到中间一行的行首
以单词为单位进行光标移动:
w 将光标移动到下一个单词的开头
2w 将光标向后移动 2 个单词,即移动到其后第 2 个单词的开头
e 若光标位于当前单词的最后一个字符上,则将光标移动到下一个单词的结尾字符上;
若光标不位于当前单词的最后一个字符,则将光标移动到当前单词的最后一个字符上。
2e 若光标位于当前单词的最后一个字符上,则将光标移动到其后第 2 个单词的结尾字符上;若光标不位于当前单词的最后一个字符,则将光标移动到气候第 1 个单词的结尾字符上。
b 若光标位于当前单词的第 1 个字符上,则将光标移动到当前单词前一个的单词的第 1 个字符上;若光标不位于当前单词的第 1 个字符上,则将光标移动到当前单词的第 1 个字符上。
2b 若光标位于当前单词的第 1 个字符上,则将光标移动到当前单词前一个的单词的第 2 个字符上;若光标不位于当前单词的第 1 个字符上,则将光标移动到当前单词的第 2 个字符上。
:help word-motions 查看关于以单词为单位进行光标移动的帮助文档
以句子为单位进行光标的移动:
) 将光标由当前位置移动到下一句话句首字符的位置
( 若光标位于所在句子的句首字符位置,则将光标移动到前一句的句首位置;若光标不位于所在句子的句首字符位置,将光标移动到所在句子的第 1 个字符的位置。
2( 将光标由当前位置移动到其后第 2 句话句首字符的位置
2) 若光标位于所在句子的句首字符位置,则将光标移动到其前面 2 句话的句首位置;
若光标不位于所在句子的句首字符位置,则将光标移动到其前面 1 句话的句首位置;
} 将光标移动到下一段段首的位置
{ 将光标移动到上一段段首的位置
:help cursor-motions 查看与光标移动有关的帮助信息
ma 在光标所在位置创建一个名为 a 的标记,记录光标位置
'a 回到光标 a 所在的位置
Ctrl+o 回到原来的位置
Ctrl+i 到下一个位置
ap 在可视模式下,选择光标所在处的一个段落
aw 在可视模式下,选择光标所在处的的一个单词
ab 在可视模式下,选择光标所在处由圆括号()包围的一个区域内的所有内容
:help object-motions 查看与对象移动有关的帮助信息
:help text-objects 查看与文本对象有关的帮助信息
:help motions/various-motions 查看与移动有关的帮助信息
:help user-manual 查看用户手册
:help abbreviation 查看与缩写相关的帮助信息
Ctrl+] 在查看帮助信息时,将光标放在[<>]之间,可以跳转到相关的帮助信息
:helpgrep phrase 寻找所有帮助文档,显示包含指定内容"phrase"的帮助信息
:cnext 跳转到文档中下一个包含所搜索信息"phrase"的部分
:cprev 跳转到文档中上一个包含所搜索信息"phrase"的部分
:clist 显示文档中包含"phrase"部分的列表
:swapname 显示交换文件的名字
~ 改变光标所在处字符的大小写格式
:pwd 显示Vim寻找文件的默认路径
| 将光标移动到改行的第一个字符处
dl 将光标所在处的字符删除
dw 将光标所在处的单词删除
dd 删除光标所在行的全部内容
yy 赋值光标所在行的全部内容到剪贴板
yap 复制光标所在段落的全部内容到剪贴板
p 在当前光标所在处之后的位置粘贴剪贴板的内容
P 在当前光标所在处之前的位置粘贴剪贴板的内容
dwwP 将光标所在位置前(不含光标)的单词和光标所在位置后(包含光标)单词转换
:help mark-motions 查看关于制作标签以记录位置的帮助文档