1. gvim简明教程
文章来源: gvim7.0中自带的官方版本
vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中
就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而掌握好这
些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用了。
第一讲第二节∶VIM的进入和退出
!! 特别提示∶敬请阅读完整本一节的内容,然磨高后才能判戚执行以下所讲解的命令。
---> 这种方式的退出编辑器绝不会保存您进入编辑器以来所做的改动。
如果您想保存更改再退出,请输入∶
:wq <回车>
vimtutor <回车>
vim tutor <回车>
---> 这里的 'vim' 表示进入vim编辑器,而 'tutor'则是您准备要编辑的文件。
** 在正常模式下,可以按下 i 键来插入文本。**
---> There is text misng this .
---> There is some text missing from this line.
第二讲第一节∶删除类命令
特别提示∶您所输入的 dw 会在您输入的同时出现在屏幕的最后一行。如果您输
入有误,请按下 <ESC> 键取消,然后重新再来。
---> There are a some words fun that don't belong paper in this sentence.
删除命令 d 的格式如下∶
[number] d object 或者 d [number] object
其意如下∶
number - 代表执行命令的次数(可选项,缺省设置为 1 )。
d - 代表删除。
object - 代表命令所要操作的对象(下面有相关介绍)。
一个简短的对象列表∶
w - 从当前光标当前位置直到单字/单词末尾,包括空格。
e - 从当前光标当前位置直到单字/单词末尾,但是 不 包括空格。
$ - 从当前光标当前位置直到当前行末。
特别提示∶
对于勇于探索者,请在正常模式下面仅按代表相应对象的键而不使用命令,则
将看到光标的移动正如上面的对象列表所代表的一样。
** 输入 u 来撤消最后执行的命令,输入 U 来修正整行。**
---> Fiix the errors oon thhis line and reeplace them witth undo.
第三讲第三节∶更改类命令
---> This lubw has a few wptfd that mrrf changing usf the change command.
---> This line has a few words that need changing using the change command.
提示∶请注意 cw 命令不仅仅是替换了一个单词,也让您进入文本插入状态了。
[number] c object 或者 c [number] object
下面我们继续学习下一讲。
第四讲第二节∶搜索类命令
---> When the search reaches the end of the file it will continue at the start.
"errroor" is not the way to spell error; errroor is an error.
提示∶如果查找已经到达文件末尾瞎冲尺,查找会自动从文件头部继续查找。
** 输入 :s/old/new/g 可以替换 old 为 new。**
---> the best time to see thee flowers is in thee spring.
第五讲第一节∶在 VIM 内执行外部命令的方法
---> 提示∶ 所有的外部命令都可以以这种方式执行。
---> 提示∶ 所有的 : 命令都必须以 <回车> 告终。
** 要保存文件的部分内容,请输入 :#,# w FILENAME **
第六讲第二节∶光标后插入类命令
提示∶输入大写 A 的操作方法可以在行末插入文本,避免了输入 i,光标定位到
最后一个字符,输入的文本,<ESC> 回复正常模式,箭头右键移动光标以及
x 删除当前光标所在位置字符等等诸多繁杂的操作。
---> This line will allow you to practice
---> This line will allow you to practice appending text to the end of a line.
Vim 拥有一个细致全面的在线帮助系统。要启动该帮助系统,请选择如下三种方
法之一∶
输入 :q <回车> 可以关闭帮助窗口。
提供一个正确的参数给":help"命令,您可以找到关于该主题的帮助。请试验以
下参数(可别忘了按回车键哦。:)∶
:help w <回车>
:help c_<T <回车>
:help insert-index <回车>
:help user-manual <回车>
2. linux下vim 查找命令
linux下vim 查找命令:
/text --查找text, 按n查找下一个, N查找上一个
?text --查找text(反向查找), 按n查找下一个, N查找上一个
*/# --查找光标当前的单词,相当于/text
:set ignorecase --查找忽略大小写
:set noignorecase --查找不忽略大小写
:nohlsearch --关闭当前的高亮显示,当再次查找时恢复高亮
:set incsearch --逐步搜索模式,对当前键入的字符进行查找,不必等输入完成
:set wrapscan --重新搜索,当搜索到文件头或尾时,返回重新搜索
(2)vim命令手册扩展阅读:
1、文件窗口:
:open file --在当前窗口打开新文件
:split file --在新窗口打开文件
:new file --用新窗口打开文件,同 :split file
:bn --切换到下一个文件
:bp --切换到上一个文件
:args --查看当前打开的文件列表(当前正在编辑的文件会用[]括起来)
:e ftp://192.168.10.76/abc.txt
:e qadrive est.txt --打开远程文件
:split --打开一个新窗口,光标停在顶层的窗口上
:new --打开一个新窗口,光标停在顶层的窗口上
:vsplit --横向打开窗口。
Ctrl+ww --移动到下一个窗口
Ctrl+wj --移动到下方的窗口
Ctrl+wk --移动到上方的窗口
2、其他命令:
Esc/Ctrl+[ -- 键入命令
:!command --执行shell命令
:suspend/Ctrl+Z --挂起vim,回到shell,fg 返回vim
:!perl -c script.pl --检查perl脚本语法,不用退出vim
:!perl script.pl --执行perl脚本, 不用退出vim
:help --显示帮助文档
:help i --显示i的帮助文档(:特殊键用<>, -t:启动参数用-)
3、编辑命令:
插入:
i --在当前位置插入
A --在当前行尾插入
I --在当前行首插入
o --在当前行后插入一行
O --在当前行前插入一行
拷贝粘贴剪切:
yy --拷贝当前行
2yy --拷贝当前行开始的2行
p --在当前光标后粘贴
P --在当前行前粘贴
:1,10 co 20 --将1-10行插入到第20行之后。
:1,$ co $ --将整个文件复制一份并添加到文件尾部
v --进入选择模式,相当于在Windows下按住 Shift选择
V --进入选择模式,整行选择
ddp --交换当前行和其下一行
2dd --剪切当前行之后的2行
:1,10d --将1-10行剪切
:1, 10 m 20 --将第1-10行移动到第20行之后
替换:
ra --将当前光标所在字符替换为a
s/old/new/ --用old替换new,替换当前行的第一个匹配
s/old/new/g --用old替换new,替换当前行的所有匹配
%s/old/new/ --用old替换new,替换所有行的第一个匹配
%s/old/new/g --用old替换new,替换所有匹配
:10,20 s/^/text/g --在第10行到第20行每行前面加上text(:3,5 s/^/#/g --注释3-5行, :3,5 s/^#//g
--解除3-5行的注释, :1,$ s/^/#/g --注释整个文档, :%s/^/#/g --注释整个文档)
ddp --交换光标所在行和下一行
移动:
h --左移一个字符(5h --左移5个字符)
l --右移一个字符(5l --右移5个字符)
k --上移一个字符(5k --上移5个字符)
j --下移一个字符(5j --下移5个字符)
w --向后移动一个单词(5w --向后移动5个单词)
b --向前移动一个单词(5b --向前移动5个单词)
e --同 w ,光标停在单词尾部
ge --同 e ,光标停在单词尾部
^ --移动到本行第一个非空白字符
0 --移动到本行第0个字符
--同0
$ --移动到行尾(3$ --移动到下面3行的行尾)
gg --移动到文件头(10gg --移动到第10行首)
[[ --同 gg
G --移动到文件尾(10G --移动到第10行尾)
]] --同 G
fx --移动到本行光标后第一个为x的字符(3fx --移动到本行光标后第3个为x的字符)
Fx --同 fx ,反向查找
:20 --跳到20行行首
Ctrl+e --向下滚动一行
Ctrl+y --向上滚动一行
Ctrl+d --向下滚动半屏
Ctrl+u --向上滚动半屏
Ctrl+f --向下滚动一屏
Ctrl+b --向上滚动一屏
撤销:
u --撤销
U --撤销对整行的操作
Ctrl+r --撤销刚才的撤销
删除:
x --删除当前字符(3x --删除当前光标开始向后三个字符)
X --删除当前字符的前一个字符, 同 dh
dl --删除当前字符, 同 x
dh --删除前一个字符
dd --删除当前行
dj --删除上一行
dk --删除下一行
10d --删除当前行开始的10行。
D --删除当前字符至行尾, 同 d$
kdgg --删除当前行之前所有行(不包括当前行)
:1,10d --删除1-10行
:11,$d --删除11行及以后所有的行
:1,$d --删除所有行
J--删除两行之间的空行, 合并两行
退出
:wq --保存并退出
ZZ --保存并退出
:q! --强制退出并忽略所有更改
:e! --放弃所有修改,并打开原来文件
:close --关闭窗口,最后一个窗口不能使用此命令,可以防止意外退出vim
:q --如果是最后一个被关闭的窗口,那么将退出vim
3. Linux绯荤粺涓璿im宸ュ叿甯哥敤锻戒护澶у叏
鍦╨inux涓嫔仛寮鍙戯纴鐢氲呖鏄鍙锅氱$悊缁存姢宸ヤ綔锛屼篃灏戜笉浜哣im镄勪娇鐢ㄣ备綔涓轰竴涓鏂版坠锛屾垜涔熸槸鍒氩垰鎺ヨЕ锛屾湰鑺傚皢鎴戞棩甯镐娇鐢ㄦ垨鏀堕泦镄刅im甯哥敤锻戒护璁板綍涓嬫潵銆
褰撶劧锛岀洿鎺ュ湪锻戒护琛屼笂杈揿叆锛历imtutor锛屽氨鍙浠ュ︿範鍒癡im镄勬墍链夊懡浠や简銆俈im寰埚己澶э纴寰埚氱墰浜哄湪vim閲岄泦鎴愬緢澶氭彃浠朵粈涔堢殑锛屼絾杩欓噷鍙浠嬬粛锘烘湰vim锻戒护銆
绉诲姩锻戒护
h "宸j "涓媖 "涓妉 "鍙硍 "鍏夋爣绉诲姩鍒颁笅涓涓鍗曡瘝镄勯栧瓧绗 a word forwardb "鍏夋爣绉诲姩鍒颁笂涓涓鍗曡瘝镄勯栧瓧绗e "鍏夋爣绉诲姩鍒颁笅涓涓鍗曡瘝镄勫熬瀛楃ge "鍏夋爣绉诲姩鍒颁笂涓涓鍗曡瘝镄勫熬瀛楃$ "灏嗗厜镙囩Щ锷ㄥ埌褰揿墠琛岃屽熬^ "灏嗗厜镙囩Щ锷ㄥ埌褰揿墠琛岀涓涓闱炵┖锏藉瓧绗0 "灏嗗厜镙囩Щ锷ㄥ埌褰揿墠琛岀涓涓瀛楃
娉锛 杩欎簺锻戒护闄や简'0'锻戒护浠ュ栭兘鍙浠ュ湪鍓嶉溃鎺ュ弹涓涓璁版暟锛2$锛涗笂闱㈡墍链夊懡浠ら兘鍙浠ュ湪鍓嶉溃鎺ュ弹涓浜涙搷浣滃懡浠わ纴濡俤$锛宒w绛夈
淇鏀瑰懡浠
x "鍒犻櫎涓涓瀛楃d "鍏跺悗璺熶换浣曚竴涓浣岖Щ锻戒护锛屽皢鍒犻櫎浠庡綋鍓嶅厜镙囧埌浣岖Щ缁堢偣澶勭殑鏂囨湰 "鍐呭癸纴濡俤w锛宒elete word c "涓巇锻戒护锷熻兘绫讳技锛屼笉钖岀殑鍦ㄦ墽琛屽畬鍒犻櫎钖庡懡浠よ繘铡筹nsert妯″纺锛宑hange dd "鍒犻櫎涓鏁磋寉y "澶嶅埗涓鏁磋宲 "鎶婂壀璐存澘鍐呭圭矘甯栧埌褰揿墠浣岖疆
vimdiff 1.c 2.c "鍒涘缓涓涓鍨傜洿鍒嗗壊绐楀彛姣旇缉杩欎袱涓鏂囦欢涓嶅悓镄勫湴鏂
鎼灭储锻戒护
fa "鍗曞瓧绗︽悳绱锛宖a鏄鍦ㄥ綋鍓嶈屾悳绱涓嬩竴涓猘,find a/string "鍏ㄦ枃链鎼灭储涓涓瀛楃︿覆锛屽傝佹垒鍒板崟璇"func"鍒欑敤/func "濡傛灉鏂囨湰链夊氢釜func,鎸変笅n灏变细绉诲姩鍒版帴涓嬫潵镄刦unc浣岖疆涓
"n鍓嶉溃涔熷彲浠ユ帴鍙楁暟瀛楄℃暟锛屽3n锛屽氨浼氭垒绱ф帴绗涓変釜func
?string "涓/string镄勫姛鑳界浉钖岋纴鍞涓镄勫尯鍒灏辨槸鎼灭储镄勬柟钖戠浉鍙
娉锛
鍙浠ョ敤锛歴et noingorecase 蹇界暐瀛楃﹀ぇ灏忓啓锛
/鍜岋纻锻戒护閮芥湁璁板繂锷熻兘锛屽彲浠ョ敤澶氭UP阌阃夋嫨鎼灭储铡嗗彶锛岃板綍锻戒护链澶х殑铡嗗彶𨱒℃暟鍙浠ュ湪浼氲瘽viminfo涓婃洿鏀癸绂
鎼灭储瀛楃.*/?%$^[]绛夌壒娈婂瓧绗﹁佸湪鍓嶉溃锷犱竴涓鍙嶆枩𨱒犺浆镒忥绂
鎼灭储鍒板ょ珛镄勫崟璇嶏纴涔熷氨鏄鍓嶅悗閮芥病链夊叾浠栧瓧绗︾殑锛堥櫎浜嗙┖镙硷纴鍒惰〃绗︼级,濡傚彧鎼渢he,涓嶆兂鎼滃埌there鎴杦hether杩欐牱镄勶纴瑕佺敤//the/锛
鍙浠ョ敤:set hlsearch鎶婅佹悳绱㈢殑鍗曡瘝楂树寒鏄剧ず锛
瀹氢綅锻戒护
G "鍏夋爣绉诲姩鍒版枃浠剁殑链钖庝竴琛岋纴鎴栬匰hift+G15G "鍏夋爣绉诲姩鍒版枃浠剁殑绗15琛岋纴鎴栬15gggg "鍏夋爣绉诲姩鍒版枃浠剁殑绗涓琛 45% "鍏夋爣绉诲姩鍒版枃浠45%澶凥 "鍏夋爣绉诲姩鍒板綋鍓嶅睆骞旷殑链寮濮婱 "鍏夋爣绉诲姩鍒板綋鍓嶅睆骞旷殑涓闂碙 "鍏夋爣绉诲姩鍒板綋鍓嶅睆骞旷殑链钖
娉锛 CTRL+g镆ョ湅褰揿墠鍏夋爣浣岖疆
婊氩睆锻戒护
CTRL+U "绐楀彛钖戜笂婊氩崐灞廋TRL+D "绐楀彛钖戜笅婊氩崐灞廋TRL+E "钖戜笂婊氢竴琛岋纴娌″お澶у疄闄呮剰涔塁TRL+Y "钖戜笅婊氢竴琛孋TRL+F "钖戝墠婊氢竴鏁村睆CTRL+B "钖戝悗婊氢竴鏁村睆zz "褰揿墠琛岀疆浜庡睆骞曚腑澶畓t "褰揿墠琛岀疆浜庡睆骞曢《绔疴b "褰揿墠琛岀疆浜庡睆骞曞簳绔
鍒嗗壊绐楀彛
:split "妯镌鍒嗗壊:new "妯镌娣诲姞涓涓鏂扮獥鍙:vsplit "绔栫潃鍒嗗壊:vnew "绔栫潃娣诲姞鏂扮獥鍙CRTL+W w "鎸夐‘搴忓垏鎹㈠皬绐楀彛:qall "鍏抽棴镓链夌獥鍙:wall "淇濆瓨镓链夌獥鍙
镙囩(tab)锻戒护
:tabedit filename "鍦ㄦe湪缂栬緫镄剉im绐楀彛寤轰竴涓鍙玣ilename镄则ab椤:tab split "鏂板缓涓涓猼ab椤礸t "绉诲姩鍒颁笅涓涓猼ab椤礸T "绉诲姩鍒颁笅涓涓猼ab椤