zoukankan      html  css  js  c++  java
  • Vim基本操作

    very good

    Vim基本操作 - KlniuWiki

    Vim基本操作

    来自KlniuWiki
    跳转到: 导航, 搜索

    目录

     [隐藏

    1 打开文件

    vim -c cmd file 
    在打开文件前,先执行指定的命令;
    vim -r file 
    恢复上次异常退出的文件;
    vim -R file 
    以只读的方式打开文件;
    vim -y num file 
    将编辑窗口的大小设为num行;
    vim + file 
    从文件的末尾开始;
    vim +num file 
    从第num行开始;

    2 模式

    正常模式 
    可以使用快捷键命令,或按:输入命令行。
    插入模式 
    可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。
    可视模式 
    正常模式下按v可以进入可视模式,在可视模式下,移动光标可以选择文本。
    块选择模式 
    正常模式下按ctrl+v进入。
    替换模式 
    正常模式下,按R进入。

    3 光标移动

    命令模式:

    [number] [action] object

    或者

    [action] [number] object

    number为执行次数;action为命令;object为执行对象

       k          上
    h   l      左  右
       j           下
    
    以单词为单位向右移动光标,支持计数,如3w,向右移动3个单词。
    向右移动一个单词,不把符号或标点当作单词处理
    向左移动一个单词,把符号或标点当作单词处理,如3b,向前移动3个单词。
    向左移动一个单词,不把符号或标点当作单词处理
    向右移动一个单词,光标在单词的尾字母处,如3e,向后移动3个单词。
    向右移动一个单词,光标在单词的尾字母处,如3e,向后移动3个单词,但忽略其他边界字符。
    ge 
    向左移动一个单词,光标在单词的尾字母处,如3ge,向前移动3个单词。
    gE 
    向左移动一个单词,光标在单词的尾字母处,如3ge,向前移动3个单词,但忽略其他边界字符
    移动到该行第一个非空格的字符处
    到行首
    $Snbsp;
    到行尾
    gg 
    到页首
    到页末
    行号+G 
    跳转到指定行
    Ctrl+g 
    查询当前行位置和当前文件位置
    fx 
    向右跳到本行字符x处(x可以是任何字符)
    Fx 
    向左跳到本行字符x处(x可以是任何字符)
    tx 
    和fx相同,区别是跳到字符x前
    Tx 
    和Fx相同,区别是跳到字符x后
    CTRL+U 
    向上滚动半屏
    CTRL+D 
    向下滚动半屏
     % 
    跳转到与当前光标下的括号相匹配的字符上记数+% 跳转到正文的某个部分,如"50%"将会把光标定位在文件的中间。
    跳转到本屏幕的开始
    跳转到本屏幕的中间
    跳转到本屏幕的结尾
    zz 
    把当前行置为屏幕正中央
    zt 
    把当前行置于屏幕顶端
    zb 
    把当前行置于屏幕底端

    4 退出Vi

    ZZ 
    退出vi并保存
    :q!  
    退出vi,不保存
    :wq 
    退出vi并保存

    5 重复操作

    重复上一次操作

    6 自动补齐

    C-n 
    匹配下一个关键字
    C-p 
    匹配上一个关键字

    7 插入

    在光标下方新开一行并将光标置于新行行首,进入插入模式。
    同上,在光标上方。
    在光标之后进入插入模式。
    同上,在光标之前。
    在当前光标处进入插入模式
    在行首进入插入模式
    进入替换模式,直到按下Esc
    :r filename 
    在当前位置插入另一个文件的内容。
    :r !date 
    在光标处插入当前日期与时间。同理,:r!command可以将其它shell命令的输出插入当前文档。

    8 删除

    dl 
    删除当前光标下的字符,同 x 功能一样,建议将 x 映射为其他功能。(用"c"命令代替"d"这些命令就都变成更改命令)。
    dh 
    删除当前光标左边的字符,同 X 功能一样,建议将 X 映射为其他功能。(用"c"命令代替"d"这些命令就都变成更改命令)。
    dw 
    删除光标之后的单词剩余部分,包括空格。(用"c"命令代替"d"这些命令就都变成更改命令)。
    de 
    删除光标之后的单词剩余部分,不包括空格。(用"c"命令代替"d"这些命令就都变成更改命令)。
    db 
    删除自当前光标至前一个单词的开始。(用"c"命令代替"d"这些命令就都变成更改命令)。
    diw 
    删除当前光标所在的单词(不包括空白字符)。(用"c"命令代替"d"这些命令就都变成更改命令)。
    daw 
    删除当前光标所在的单词包括空白字符)。(用"c"命令代替"d"这些命令就都变成更改命令)。
    d$Snbsp;
    删除光标之后的该行剩余部分,同 D 功能一样,建议将 D 映射为其他功能。(用"c"命令代替"d"这些命令就都变成更改命令)。
    dd 
    删除当前行。(用"c"命令代替"d"这些命令就都变成更改命令)。
    cl 
    功能和 dl 相同,删除当前光标下的字符,区别在于完成删除操作后进入 INSERT MODE,同 s 功能相同,建议将 s 映射为其他功能。
    ch 
    功能和 dh 相同,删除当前光标左边的字符,区别在于完成删除操作后进入 INSERT MODE。
    cw 
    功能和 dw 相同,删除光标之后的单词剩余部分,区别在于完成删除操作后进入 INSERT MODE。
    ce 
    功能和 de 相同,删除光标之后的单词剩余部分,区别在于完成删除操作后进入 INSERT MODE。
    c$Snbsp;
    功能和 d$ 相同,区别在于完成删除操作后进入 INSERT MODE,同 C 功能一样,建议将 C 映射为其他功能。
    cc 
    也是删除当前行,然后进入 INSERT MODE,同 S 功能相同,建议将 S 映射为其他功能。
    ci[ 
    删除一对 [] 中的所有字符并进入插入模式
    ci( 
    删除一对 () 中的所有字符并进入插入模式
    ci< 
    删除一对 <> 中的所有字符并进入插入模式
    ci{ 
    删除一对 {} 中的所有字符并进入插入模式
    cit 
    删除一对 HTML/XML 的标签内部的所有字符并进入插入模式
    ci” ci’ ci` 
    删除一对引号字符 (” 或 ‘ 或 `) 中所有字符并进入插入模式
    删除一个换行符。
    dG 
    删除当前行至文件尾的内容(用"c"命令代替"d"这些命令就都变成更改命令)。
    dgg 
    删除当前行至文件头的内容 (用"c"命令代替"d"这些命令就都变成更改命令)。

    9 更改字符

    rx 
    将当前光标下的字符更改为x(x为任意字符)
    更改当前光标下的字符的大小写
    xp 
    交换两个字母。

    10 定位及文件状态

    CTRL-g 
    显示当前编辑文件中当前光标所在行位置以及文件状态信息。
    SHIFT-G 
    则直接跳转到文件中的某一指定行

    11 可视模式

    进入行选择模式。
    CTRL-v 
    进入块选择模式。
    vi[ 
    选择一对 [] 中的所有字符
    vi( 
    选择一对 () 中的所有字符
    vi< 
    选择一对 <> 中的所有字符
    vi{ 
    选择一对 {} 中的所有字符
    vit 
    选择一对 HTML/XML 的标签内部的所有字符
    vi” vi’ vi` 
    选择一对引号字符 (” 或 ‘ 或 `) 中所有字符

    12 键盘宏操作

    qcharacter 
    开始录制宏,character为a到z的任意字符
    终止录制宏
    @character 
    调用先前录制的宏

    13 恢复误操作

    撤销最后执行的命令
    修正之前对该行的操作
    Ctrl+R 
    Redo

    14 查找与替换

    /字符串 
    在当前文件正向查找相应的字符串。继续查找同一个字符串,按n或/(ENTER),若要反向继续查找,按Shift+N,.*[]^%~$ 在Vi中具有特殊含义,若需要查找则应该加上转义字符"\"
     ?字符串 
    在当前文件反向查找相应的字符串。继续查找同一个字符串,按n或/(ENTER),若要反向继续查找,按Shift+N,.*[]^%~$ 在Vi中具有特殊含义,若需要查找则应该加上转义字符"\"
     % 
    查找配对的括号
    :s/old/new/g 
    在当前行替换old为new,若没有g则表示只替换一个。若要每个替换都向用户询问则应该用gc选项。
    :#,#s/old/new/g 
    在两行之间替换old为new,#,#代表的是两行的行号。
    :%s/old/new/g 
    替换整个文件中的每个匹配串。
    :%s/^/xxx/g 
    在每一行的行首插入xxx,^表示行首。
    :%s/$/xxx/g 
    在每一行的行尾插入xxx,^表示行尾。
    向下搜索光标所在词。
    向上搜索光标所在词。
    :set hlsearch 
    设置高亮
    :set nohlsearch 
    关闭高亮
    :nohlsearch 
    关闭当前已经设置的高亮
    :set incsearch 
    设置增量查找
    :set noincsearch 
    关闭增量查找

    15 剪切、复制与粘贴

    [n]x 
    剪切光标右边n个字符,相当于d[n]l。
    [n]X 
    剪切光标左边n个字符,相当于d[n]h。
    复制在可视模式下选中的文本。
    yy or Y 
    复制整行文本。
    y[n]w 
    复制一(n)个词。
    y[n]l 
    复制光标右边1(n)个字符。
    y[n]h 
    复制光标左边1(n)个字符。
    y$Snbsp;
    从光标当前位置复制到行尾。
    y0 
    从光标当前位置复制到行首。
    :m,ny 
    复制m行到n行的内容。
    y1G或ygg 
    复制光标以上的所有行。
    yG 
    复制光标以下的所有行。
    删除(剪切)在可视模式下选中的文本。
    d$ or D 
    删除(剪切)当前位置到行尾的内容。
    d[n]w 
    删除(剪切)1(n)个单词
    d[n]l 
    删除(剪切)光标右边1(n)个字符。
    d[n]h 
    删除(剪切)光标左边1(n)个字符。
    d0 
    删除(剪切)当前位置到行首的内容
    [n] dd 
    删除(剪切)1(n)行。
    :m,nd 
    剪切m行到n行的内容。
    d1G或dgg 
    剪切光标以上的所有行。
    dG 
    剪切光标以下的所有行。
    在光标之后粘贴。
    在光标之前粘贴。

    16 分割窗口

    :split(
    sp) [filename] : 水平分割窗口,如果指定文件名,则在新窗口内打开文件。
    :nsplit(
    nsp) [filename] : 水平分割出一个n行高的窗口,如果指定文件名,则在新窗口内打开文件。
    :new 
    水平分割出一个窗口,并编辑一个新文件。
    :vsplit(
    vsp) : 把当前窗口分割成水平分布的两个窗口,如果指定文件名,则在新窗口内打开文件。
    :vnew 
    垂直分割出一个新窗口。
    ctrl+w + 
    当前窗口增高一行。也可以用n增高n行。
    ctrl+w - 
    当前窗口减小一行。也可以用n减小n行。
    ctrl+w_ 
    当前窗口扩展到尽可能的大。

    17 缩进缩出

    [n]>> 
    正常模式下,按两下>,即>>光标所在行会缩进。如果先按了n,再按>>,光标以下的n行会缩进。
    [n]<< 
    正常模式下,按两下<,即<<光标所在行会缩出。如果先按了n,再按<<,光标以下的n行会缩出。
    [n]= 
    如果在编辑代码文件,可以用=进行调整,在可视模式下,选择要调整的代码块,按=,代码会按书写规则缩排好,或者n=,调整n行代码的缩排。

    18 多标签编辑

    :tabe filename 
    在新的标签中打开一个文件。
    :tabn 
    切换到下一个标签。
    :tabp 
    切换到上一个标签。

    19 外部命令、文件保存与删除

    :!cmd 
    cmd即代表外部命令,比如:ls,列出当前目录文件。
    :w 
    保存文件内容默认文件名。
    :w TEST 
    保存文件内容至TEST文件。
    :!rm TEST 
    删除TEST文件。
    :#,# w TEST 
    保存两行之间文件内容至TEST文件。其中#,#代表两行号。
    :e file 
    关闭当前编辑的文件,并开启新的文件。如果对当前文件的修改未保存,vi会警告。
    :e! file 
    放弃对当前文件的修改,编辑新的文件。
    :e+file 
    开始新的文件,并从文件尾开始编辑。
    :e+n file 
    开始新的文件,并从第n行开始编辑。
    :enew 
    编辑一个未命名的新文档。
    :e 
    重新加载当前文档。
    :e!  
    重新加载当前文档,并丢弃已做的改动。
    :wq 
    保存并退出。
    :x 
    保存并退出。
    :saveas newfilename 
    另存为
    :q! 或 ZZ 
    不保存退出

    20 其他

    :set fileencodings 
    查看编码
    :set fileencodings 编码 
    设置编码,例如set fileencodings=utf-8,gb2312
    :set nu 
    设置行号
    :set nonu 
    取消行号显示
  • 相关阅读:
    bzoj1951 [Sdoi2010]古代猪文
    bzoj2693 jzptab
    数学一本通第三章总结
    poj1019 Number Sequence
    SGU179 Brackets light
    字母组合2
    字母组合
    Java基础知识强化之集合框架笔记09:Collection集合迭代器使用的问题探讨
    Java基础知识强化之集合框架笔记08:Collection集合自定义对象并遍历案例(使用迭代器)
    Java基础知识强化之集合框架笔记07:Collection集合的遍历之迭代器遍历
  • 原文地址:https://www.cnblogs.com/lexus/p/2766544.html
Copyright © 2011-2022 走看看