VIM使用

来源:互联网 发布:轮胎数据怎么看 编辑:程序博客网 时间:2024/05/01 09:13

Vim常用命令


1切换插入模式:
命令模式下
a                                (小写)光标之后进行插入
A                                (大写)光标所在行尾进行插入
i                                 (小写)光标前开始进行插入
I                                (大写)光标所在行首进行插入
o                                (小写)光标所在行后新插入一空行进行插入
O                                (大写)光标所在行前新插入一空行进行插入
插入模式下按ESC键返回命令模式


2 切换到编辑模式
命令模式下按【:】进入编辑模式,键入命令回车后自动返回到命令模式或按ESC键返回到命令模式。


3 保存文件
编辑模式下
:w                            (小写)保存文件
​:wq                         (小写)保存并退出vim
:w 文件名1            将文件另存为文件名1
:ZZ                          (大写)保存文件并退出,相当于:wq
:wq!                        (小写)文件所有者强制保存只读文件,如果不是文件所有者进行此操作,不能成功
:q!                                退出不保存文件


4 复制(yank)
命令模式下
yy或 Y                     复制光标所在整行
y^                         复制到光标所在行行首,不包括光标位置字符
y$                         复制到光标所在行行尾,包括光标位置字符
yw                         复制一个单词,光标必须在单词首部
yG                         复制到文件尾
y1G                        复制到文件首
nyy                        复制光标所在行开始的n行


5 粘贴
命令模式下
p                                (小写)粘贴到光标后
P                                (大写)粘贴到光标前


6 删除
命令模式下
x                                (小写)删除光标前一个字符
X                                (大写)删除光标后一个字符
dd                                (小写)删除光标所在整行

C                     光标至行尾全删除后输入

dw                    向前删除光标开始处到所在处一个单词

daw                          删除光标所处单词
dw                                向后删除光标开始处到所在处一个单词
dG                                删除光标所在整行到文件尾
dgg                        删除光标所在整行到文件首
D                                (大写)删除到行尾,包含光标处的字符
d$                                与D效果相同
d0                                删除到行首,不包含光标处的字符
d^                                与d0效果相同
:n1,n2d                编辑模式下,删除n1-n2行


7撤销
命令模式下

u                        (小写)无限次保存前撤销(大概500多次)

ctrl+r                 redo


8 字符替换
命令模式下
r                        (小写)替换光标所在处一个字符
R                        (大写)开始替换,直到按ESC键退出替换,相当于按下键盘上到insert键
cc                        (小写)取代光标所在整行
S                        (大写)与ss(小写)效果相同
C                        (大写)取代到行尾,包括光标处字符
c0                        (小写,数字0)取代到行首,不包括光标处字符
c^                        (小写)与c0(小写,数字0)效果相同


9 字符串查找和替换
命令模式下
/string                从光标处开始向下开始查找字符串string
/查找模式下按n(小写)查找下一个,按N(大写)查找上一个
?string        从光标处开始向上开始查找字符从string
?查找模式下按n(小写)查找上一个,按N(大写)查找下一个
*                        向下完整匹配光标下的单词
#                        向上完整匹配光标下的单词
g*                        向下部分匹配光标下的单词
g#                        向上部分匹配光标下到单词
编辑模式下
:set ic                查找时,忽略大小写
:set noic        取消查找时忽略大小写
:f string        (小写f与string有空格)搜索一行中匹配到的string
:%s/old/new/g        全文将old替换为new,不提示
:%s/old/new/c        全文将old替换为new,提示是否替换
:n1,n2s/old/new/g        n1-n2行中,将old替换为new,不提示
:n1,n2s/old/new/c        n1-n2行中,将old替换为new,提示是否替换
在替换文本old或new中有/字符时,需要用\进行转义


10 显示行号
编辑模式下
:set nu(mber)                显示行号
:set nonu                        取消显示行号
:set nu!                        取消显示行号

 

11 简单排版
编辑模式下
:ce(nter)                居中显示光标所在行
:ri(ght)                靠右显示光标所在行
:le(ft)                        靠左显示光标所在行
命令模式下
J                                将光标所在下一行合并到光标所在行
>>                                光标所在行增加缩进(一个tab)
<<                                光标所在行减少缩进(一个tab)
n>>                        光标所在行开始的n行增加缩进
n<<                        光标所在行开始的n行减少缩进


12 书签
命令模式下
mx                设定书签,x是任意一个字母,通常小写(a-z),x为小写字母时,局限在一个文件之间切换;大写字母时,可在文件之间切换.
`x                (`位于数字键1旁边)跳转到书签x
编辑模式下
:marks                        查看标签


13 光标移动方式
命令模式下
H                        (大写,Head)移动到屏幕顶第一个非空白字符
M                        (大写,Mid)移动到屏幕中间第一个非空白字符
L                        (大写,Last)移动到屏幕底部第一个非空白字符
(                        (左小括号)移动到上一个句子首
)                        (右小括号)移动到下一个句子首
{                        (左大括号)移动到上一个段落首
}                        (右大括号)移动到下一个段落首
%                        光标跳转到匹配到括号处,支持{}()
[[                        光标跳转到代码块开头即{处,要求{独占一行
gD                        光标跳转到局部变量定义处
''                        (两个单引号)光标跳转到上次停靠处
h                        (小写)光标左移一个字符,相当于左方向键
l                        (小写)光标右移一个字符,相当于右方向键
k                        (小写)光标垂直上移一行,相当于上方向键
j                        (小写)光标垂直下移一行,相当于下方向键
ctrl+f                (forword)向下整页翻页
ctrl+b                (backward)向上整页翻页
ctrl+u                (up)向上翻半页
ctrl+d                (down)向下翻半页
zz                        (小写)让光标所在行居于屏幕中央
zt                        (小写)让光标所在行居于屏幕最顶部
zb                        (小写)让光标所在行居于屏幕底部
编辑模式下
:n                        指定移动到第n行


14 数字前缀与重复
命令模式下
将数字加在命令前,标示该命令处理几次,如5dd标示执行5次dd(删除光标所在整行)操作。
.        (英文句号)为命令重复命令,按下一次执行一次上一次执行过的命令。


15 浏览目录
编辑模式下
:e 目录                列出指定目录下的文件和目录


16 vim技巧
技巧1 导入文件或shell命令执行结果
编辑模式下
:r 文件名1                将文件1内容引入到本文件中
:!shell命令                在vim中执行shell命令,执行完后按回车会到vim界面
:r !shell命令        (r与!之间有空格)将shell命令执行的结果导入到本文件中


技巧2 自定义快捷键操作
编辑模式下
:map ^x 命令        (map与^之间、x与命令之间有空格,此处到^并非键盘上的^,而是按下ctrl+v出现到快捷键,表示ctrl键,后面到x为任意字母)按下ctrl+x后会执行对应到命令
例:
:map ^p I#<ESC> 当按下ctrl+p快捷组合键时,在光标所在行行首添加一个#号,并回到命令模式


技巧3 连续行注释
编辑模式下
:n1,n2/^/#/g                (#号为注释符号,在shell中注释符号为#,C++中为//)
:n1,n2/^/\/\//g        C++源文件多行连续注释


技巧4 替换
:ab string1 string2        在vim中输入string1按空格或回车后,string1会自动替换为string2
:unab string1                        取消string1的替换


vim配置文件
~/.vimrc
可将编辑模式下的命令写在里面,每个命令单独一行,这样每次启动时,会自动执行里面的命令

 

=========================================================================================

vim有三种模式-普通(可视命令)模式,命令行模式,编辑模式。启动vim后在任何模式下按Esc键进入到普通模式。普通模式下输入:回车进入命令行模式,此时vim最窗口最下面一行为:    后面可以输入命令行命令.在执行任何命令前要确保在相应的模式下。

1.启动与退出

   1)vi filename   (启动vim)

   2)命令行模式下 :wq=> 保存并退出,:q!=>强行退出,:e!=>放弃修改文件内容,重新载入该文件,:x=>退出,文件更改并保存,ZZ=>同:x命令 (退出vim)

2.基本设置-命令行模式下

  • :set nu 显示行号
  • :syn on 显示语法高亮
  • :set shiftwidth=4 设置自动缩进 4个空格, 当然要设自动缩进先.
  • :set sts=4 即设置 softtabstop 为4. 输入 tab 后就跳了 4 格.
  • :set tabstop=4 实际的 tab 即为 4个空格, 而不是缺省的 8 个.
  • :set expandtab 在输入 tab 后, vim用恰当的空格来填充这个 tab.
  • :setsuffixes=.bak,~,.o,.h,.info,.swp,.aux,.bbl,.blg,.dvi,.lof,.log,.lot,.ps,.toc
  • 在vim中打开文件时, 按 tab键补齐文件名时它会忽略上述文件.
  • :set enc=utf-8设置文字编码

设置配置文件:

:scriptnames  列出配置文件.vimrc所在的目录

:version 用户所用的配置文件.vimrc的位置

3.光标定位(普通模式、可视模式)

$       当前行的末尾

0       当前行的开头

^       当前行第一个字母

gg      文件头

G       文件尾

``      回到光标跳转前的位置

H       跳到屏幕上的第一行

M       跳到屏幕的中间行

L       跳到屏幕上的最后一行

w:      光标以单词向前移动至单词第一个字母

b:      与w相反,向后移动至单词的第一个字母

e:      光标以单词向前移动至单词最后一字母

ge:     与e相反,向后移动至单词的最后一字母

%:      移动到与制匹配的括号上去(),{},[],<>等

CTRL+G 得到当前光标在文件中的位置

向下翻页(pagedown):    CTRL+f

向上翻页(pageup):    CTRL+b

向下移动半屏:CTRL+d

向上移动半屏:CTRL+u

补记:

.光标定位(普通模式、可视模式)$ 当前行的末尾0 当前行的开头^当前行第一个字母gg 文件头G 文件尾`` 回到光标跳转前的位置H跳到屏幕上的第一行M 跳到屏幕的中间行L 跳到屏幕上的最后一行w:光标以单词向前移动至单词第一个字母b:与w相反,向后移动至单词的第一个字母e:光标以单词向前移动至单词最后一字母ge:与e相反,向后移动至单词的最后一字母%:移动到与制匹配的括号上去()...

光标定位技巧的补充:

'' 同`` -- 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, *等查

找到某个单词后, 再输入此命令则回到上次停留的位置.

'. -- 此命令相当好使, 它移动光标到上一次的修改行.

`. -- 此命令相当强大, 它移动光标到上一次的修改点.

补记:

行号+G 跳转到指定行

fx 向右跳到本行字符x处(x可以是任何字符)

Fx 向左跳到本行字符x处(x可以是任何字符)

tx 和fx相同,区别是跳到字符x前

Tx 和Fx相同,区别是跳到字符x后

4.删除和复制(普通模式、可视模式)

删除:

  • dd:    删除一行
  • dw:    删除一个单词,需将光标移到单词的第一个字母。
  • d$:    删除当前光标到该行的行尾的字母
  • daw:  删除一个单词,光标在单词任意位置
  • dnw:  删除N个单词
  • dnj:    向下删除n行
  • dnk:    向上删除n行
  • J:     删除换行符,将光标移到改行,按shift+j删除行尾的换行符,下一行接上来了。

复制:

  • yy:    复制一行
  • yw:    复制一个单词,需将光标移到单词的第一个字母。
  • yaw:   复制一个单词,光标在单词任意位置
  • ynw:   复制N个单词
  • ynj:    向下复制n行
  • ynk:    向上复制n行

修改:

  • cl:    更改当前字符
  • cw:    修改当前单词到结尾
  • cc:    修改当前行

粘贴:p,粘贴用x、d、y操作的文本

可视模式下的方式:

可视模式下,选中要编辑的文字,可执行d、y,操作。

寄存器下的操作:

在复制前可以先指定一个寄存器,方法是在双引号后跟一个字母,例如"a指定了寄存器a,"B指定了寄存器B。所以,"ayy把当前行放进了寄存器a,以后就可以用"ap来粘贴寄存器a里的内容了。如果不确定寄存器里放了什么内容,可以使用:reg来查看。

Vim提供了一个很有用的特殊寄存器"+,它的内容就是系统剪贴板的内容。可以在Vim里用"+p粘贴出来。

5.多文件操作

  1. :ls (:buffers)     显示buffer列表
    :bn                   转到下一个buffer
    :bp                   转到上一个buffer
    :b3                  转到编号为3 的buffer
    :bindex.html         转到名为index.html的buffer
    :sav                  另存为……
    :sethidden           切换buffer时不给出保存当前buffer的提示
    CTRL-G               查看当前buffer状态信息,如文件名、总行数、修改后未保存等。
  2. :sp(:vsp) 文件名      vim 将分割出一个横(纵)向窗口, 并在该窗口中打开新文件.从 vim6.0开始, 文件名可以是一个目录的名称,把该目录打开并显示文件列表,在文件名上按回车则在本窗口打开该文件, 若输入O则在新窗口中打开该文件, 输入 ?可以看到帮助信息 。                
  3. :e文件名             vim 将在原窗口中打开新的文件, 若旧文件编辑过,会要求保存.
  4. c-w-w(即 ctrl键与 w 键一同按下) vim 割了好几个窗口怎么办?输入此命令可以将光标循环定位到各个窗口之中.c-w-h光标到左窗口,c-w-j下窗口,c-w-k上窗口,c-w-l右窗口。
  5. ls          此命令查看本vim 程序已经打开了多少个文件, 在屏幕的最下方会显示出如下数据:
    1   %a      "usevim.html"         行 162
    2   #       "xxxxxx.html"         行0                     
  6. 其中:    1     表示打开的文件序号, 这个序号很有用处.
             %a     表示文件代号, % 表示当前编辑的文件,
            # 表示上次编辑的文件
                          "usevim.html"   表示文件名.
                          行162          表示光标位置.:b序号(代号)         此命令将指定序号(代号)的文件在本窗口打开, 其中的序号(代号)
                          就是用 :ls 命令看到的.
  7. :setdiff            此命令用于比较两个文件, 可以用
                          :vsp filename
                          命令打开另一个文件, 然后在每个文件窗口中输入此命令,就能看到效果了.

=========================================================================================

 

  • yaw:   复制一个单词,光标在单词任意位置

    修改:

    • cl:    更改当前字符
    • cw:    修改当前单词到结尾
    • cb :     修改当前单词到前
    • cc:    修改当前行

    vim 割了好几个窗口怎么办?输入此命令可以将光标循环定位到各个窗口之中.Ctrl+w h光标到左窗口,Ctrl+w j下窗口,Ctrl+w k上窗口,Ctrl+w l右窗口。


     

  • 原创粉丝点击