关闭

vim初步知识的学习

484人阅读 评论(0) 收藏 举报

都说vim跟emacs是编辑器之神,一直很想学习,所以这几天就看起了它的中文帮助文档。

同样想学习的朋友可以到它官网下载:VIM中文帮助文档

下载好后安装,怎么安装它里面有说明。然后就可以在vim里面输入":help user-manual@cn"查看它的中文用户手册,慢慢开始学习吧~

 

下面是我最近学习的笔记,贴在这里,自己忘了也方便查看:

建立自己的配置文件:

!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc

建立完以后检查下是否以非vi兼容模式启动,在vim中输入:

:set compatible?

如果显示:nocompatible则表示成功了。

可以输入:":scriptnames"查看到VIM所有配置文件的位置。

要编辑你的配置文件可以输入:":edit $MYVIMRC"

具体怎么配置还是看用户手册吧。

 

一些基本的设置类命令(括号内为缩写):

查找时的一些命令:

:set ignorecase(ic)忽略大小写
:set noignorecase(noic)关闭忽略大小写
:set hlsearch(hls)设置高亮匹配
:set nohlsearch(nohls)关闭高亮匹配(临时关闭,下次查找又自动开启高亮匹配了)
:set incsearch(is)输入字符串的过程就显示匹配点
:set nowrapscan(nows)关闭查找到结尾后回到文件开头继续查找
:set wrapscan(ws)开启查找到结尾后回到文件开头继续查找(系统默认开启)

:set number(nu)设置行号
:set nonumber(nonu)关闭设置行号
:set ruler(ru)右下角设置显示光标位置
:set noruler(noru)关闭右下角设置显示光标位置
:set autoindent(ai)自动缩进

:syntax on/off开启/关闭语法高亮

一些对文件的操作命令:

:e xxx.cpp编辑xxx.cpp文件(没有这个文件就会新建一个)

:w写入

:3,6 w filename    3-6行保存为filename

:r tmp.cpp读入tmp.cpp文件

:q退出窗口

可以对上面的命令加“!”,进行强制操作。比如:"q!"强制退出。

对光标的操作:

h,j,k,l方向键

$光标移动到行尾
0光标移动到行首
^光标移动到该行第一个字符
%光标移动到匹配(可用'matchpairs'选项定义)
w移动到下一个单词词首
b移动到前一个单词词首
e移动到下一个单词词尾
ge移动到前一个单词词尾
fx移动到下一个x处
Fx移动到前一个x处
33G移动到33行(你使用G跳转,这个位置会成为一个标记,要回到原地,按两下``或'',如果再按两下,就又回去了。查找也算一次跳转,也会标记位置,可以用Ctrl+O,Ctrl+I跳转。)
G移动到文件末
gg移动到文件首
30%移动到文件30%处
H、M、L移动到屏幕的顶、中、底部

 

Ctrl+U向上滚动半屏
Ctrl+D向下滚动半屏
Ctrl+E向上滚动一行
Ctrl+Y向下滚动一行
Ctrl+F向前滚动一屏
Ctrl+B向后滚动一屏
Ctrl+O跳到较老的地方
Ctrl+I跳到较新的地方
zz光标所在行处于屏幕中间
zt光标所在行处于屏幕顶部
zb光标所在行处于屏幕底部

 

ma用a标记当前光标位置(可以使用a到z,26个标记)
`a移到标记a的位置
'a移到标记a的行首
:marks查看所有的标记列表,你会看到一些特殊的标记:
    '跳转前的光标位置
    "最后编辑的光标位置
    [最后修改的开始位置
    ]最后修改的结束位置

一些操作类命令:

a光标后面插入
A行尾插入
i光标前面插入
I行首插入
o下面新行插入
O上面新行插入
r替换一个字符
R替换多个字符

x删除光标处的一个字符

X删除光标前的一个字符

dw删除一个单词(包括后面的空格)
de删除一个单词(不包括后面的空格)
dd删除整行

s删除光标处的字符,并进入输入模式

S相当于下面的cc

cc修改整行
J连接两行(删除光标所在行的换行符)
p插入在光标后
P插入在光标前
y拷贝
yy拷贝整行
Y拷贝整行(D是d$注意区别)
~改变大小写

 

其实,有些命令是一样含义的,如:

x 表示 dl
X 表示 dh
D 表示 d$
C 表示 c$
s 表示 cl
S 表示 cc

一些重复的命令:

;重复命令(如:fx后再按';'则会自动查找下一个x)
,反向重复
.重复一个修改(重复任何除'u','Ctrl+R'和冒号命令外的修改)
举例:To <b>generate</b> a table of contents.
要删除<b></b>标签, "f<","df>",";","."
举例:把"four"修改成"five"。
"/four","cwfive","n","."……

 

查找替换:

/abc    搜索    下一个n    上一个Shift+N
?abc    逆向搜索

:s/thee/the    替换光标所在行第一个匹配串
:s/thee/the/g    替换光标所在行所有匹配串
:3,6s/old/new/g    替换3-6行所有匹配串
:%s/old/new/g    全文替换匹配串
:%s/old/new/gc    替换时询问
查找时字符:.*[]^%//?~$拥有特殊含义,查找它们时要加'/',就是转义字符咯。
如果再使用以前查找过的单词,可以输入"/o<UP>",vim自动显示old
*取得光标上的单词并作为被查找的字符串
3*查找光标下单词第三次出现的地方
#反向完成相同的功能

如有:soothe、the、there几个单词
//<the/>查找the
/the/>查找the,soothe
//<the查找the,there

窗口和标签的一些操作:

:split分割窗口
:split tmp.cpp用tmp.cpp分割窗口
:new开新窗口
:{height}Ctrl-W +/-调整窗口大小
:vsplit垂直分割
:vnew
:Ctrl-WW窗口间切换
:Ctrl-Wh/j/k/l/t/b
:Ctrl-W K/J/H/L大写,调换窗口
:qall/:wall/:wqall/:qall!对所有窗口操作
:tabedit tmp.cpp建立新标签页编辑文件
:tab split
:tabnew
:gt切换标签页

记录与回放命令:

这个是直接从用户手册里面拷贝的,感觉这个太有用了:

"." 命令重复前一个修改操作。但如果你需要作一些更复杂的操作它就不行了。这时,记
录命令就变得很有效。这需要三个步骤:

1. "q{register}" 命令启动一次击键记录,结果保存到 {register} 指定的寄存器中。
   寄存器名可以用 a 到 z 中任一个字母表示。
2. 输入你的命令。
3. 键入 q (后面不用跟任何字符) 命令结束记录。

现在,你可以用 "@{register}" 命令执行这个宏。

现在看看你可以怎么用这些命令。假设你有如下文件名列表:

    stdio.h ~
    fcntl.h ~
    unistd.h ~
    stdlib.h ~

    而你想把它变成这样:

    #include "stdio.h" ~
    #include "fcntl.h" ~
    #include "unistd.h" ~
    #include "stdlib.h" ~

先移动到第一行,接着执行如下命令:

    qa            启动记录,并使用寄存器 a
    ^            移到行首
    i#include "<Esc>    在行首输入 #include "
    $            移到行末
    a"<Esc>            在行末加上双引号 (")
    j            移到下一行
    q            结束记录

现在,你已经完成一次复杂的修改了。你可以通过重复三次 "@a" 完成余下的修改。

"@a" 命令可以通过计数前缀修饰,使操作重复指定的次数。在本例中,你可以输入:
>
    3@a

简单的键盘映射:

如:把"amout"变成"{amout}"设置成F5键,最好定义成'/'加一个字母,以免与vim自身命令冲突。
:map <F5> i{<Esc>ea}<Esc>

另外学到的一些命令:

Ctrl+g    显示文档信息
Shift+G   434Shift+G    跳转

:jumps输出你可以跳往的位置的列表。最后一个你使用的标记会用">"符号标记出来。

v启动可视模式
Ctrl+v可以选择列的可视模式
可视模式下切换光标o、O

 

 

继续学习中……

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12960次
    • 积分:271
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:0篇
    • 译文:0篇
    • 评论:7条
    文章分类
    文章存档
    最新评论