Vim

鸟哥链接:http://cn.linux.vbird.org/linux_basic/0310vi_2.php

u 撤销

dd 删除当前行并存到剪切板 , 删除从当前行开始的下面n行:ndd

p 粘贴剪切板

x 删除当前光标所在的字符

各种插入(会自动进入插入模式):

a 在当前光标后插入

o 换行(在光标所在行下开启一个行)

O (大写O)换行(在…………     上…………)

移动光标

h、j、k、l 分别代表左、下、上、右。前面加数字表示移动多少次,比如20h表示向上移动20次

n<space> 光标向右移动n个字符

n<Enter> 向下移动n次

翻页

Ctrl + f 相当于Page Donw

Ctrl + 相当于 Page Up

0 (数字零)跳到行头

^ 到该行第一个不是blank的字符那

$   到行尾

g_  到该行最后一个不是blank的字符那

/pattern 搜索pattern ,按n可以跳到下一个

Undo/Redo

u   undo  

ctrl + r   redo

复制粘贴

yy 复制

p或者P  粘贴  p是粘贴到光标下一行 P是粘贴到前一行 这里试了一下 如果是dd之后p的话 就是前面说的这种情况 如果是x然后p的话就是在光标前后

 

剪切

d$ 从光标处剪切到行尾

选中

shift+v

缩进

<  >分别朝两头缩进

打开/保存/退出/

:e <file path> 打开文件 可以e!强制执行 如果当前编辑没保存要打开另一个文件的话

:w 保存

:saveas <file path> 另存为

:x ZZ :wq 保存并退出

注意:上面这三种的区别

:x只有在有修改的情况下才会改变写入,更改时间戳,如果没有更改,时间戳是不会变的

:wq 无论有没有修改都会写入,更改时间戳

ZZ 不需要进入命令模式,也就是不需要打冒号。若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!

:q! 退出不保存  

:qa! 强行退出所有的正在编辑的文件,就算别的文件有更改。 

:bn 和 :bp  你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。

行跳转

gg 到第一行

:N 跳转到第N行

NG 同上 所以gg相当于 1G

A 到行尾

G 到最后一行

H 移动到屏幕最上方的那行的第一个字符

按单词移动

w 到下一个单词的开头 e 到下一个单词的结尾

* 和 #:  匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)

% : 匹配括号移动,包括 (, {, [. (需要把光标先移到括号上)

这些光标的移动很重要

比方说:0y$ 意味着

  • 0 → 先到行头
  • y → 从这里开始拷贝
  • $ → 拷贝到本行最后一个字符


多文件操作

方式一:

vim file1 file2 能打开两个文件,不过显示的当前的是file1

:n 转到下一个文件

:N 转到上一个文件

:files 列出开启的所有文件

这样就能实现多个文件之间的利用 nyy 复制 然后p粘贴的功能

方式二(多窗口):

比如,打开文件 vim f1,然后再输入 :sp f2 就可以在f1中打开f2,如果只输入:sp ,那么就是打开当前文件,这样方便对照着看,当文件很大的时候。

通过ctrl + w + 向上(k),ctrl + w + 向下(j)可以切换文件,然后进行复制操作,要退出的话,:q就可以了

搜索

/word 向光标之下寻找一个名称为 word 的字符串

?word 向光标之上寻找一个字符串名称为 word 的字符串

n 重复前一个搜索动作,就相当于你在浏览器Ctrl + f 然后不断Enter一样

N 与n反向

替换

:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:『:100,200s/vbird/VBIRD/g』

:1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 

:1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代

代码折叠

vim 提供 6中折叠方式
          manual           手工定义折叠
          indent             更多的缩进表示更高级别的折叠
          expr                用表达式来定义折叠
          syntax             用语法高亮来定义折叠
          diff                  对没有更改的文本进行折叠
          marker            对文中的标志折叠

可用选项 'foldmethod' 来设定折叠方式:set fdm=*****。

indent 对应的折叠代码有:
zc      折叠
zC     对所在范围内所有嵌套的折叠点进行折叠
zo      展开折叠
zO     对所在范围内所有嵌套的折叠点展开

[z       到当前打开的折叠的开始处。
]z       到当前打开的折叠的末尾处。
zj       向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
zk      向上移动到前一折叠的结束处。关闭的折叠也被计入。

原文地址:https://www.cnblogs.com/i-love-kobe/p/6085344.html