vim的模式

正常模式(也叫命令模式,按 Esc 或 Ctrl+[ 进入) 左下角显示文件名或为空

插入模式(在命令模式下按 i 键进入) 左下角显示--INSERT--
可视模式(在命令模式下按ctrl + v) 左下角显示--VISUAL--

末行模式(在命令模式下,按下“:”或者“/(表示查找)”即可进入),退出方式:按下esc,连按2次esc键 ,删除末行全部输入字符

插入命令

i 在当前位置前插入

I 在当前行首插入

a 在当前位置后插入

A 在当前行尾插入

o 在当前行之后插入一行(换行插入)

O 在当前行之前插入一行(换行插入)

进入编辑模式,按 i 或者 o 进行编辑

编辑结束,按ESC 键 跳到命令模式,然后输入退出命令:

:w                保存文件但不退出vi 编辑

:w!               强制保存,不退出vi 编辑

:w file           将修改另存到file中,不退出vi 编辑

:wq               保存文件并退出vi 编辑

:wq!              强制保存文件并退出vi 编辑

q:                  不保存文件并退出vi 编辑

:q!                 不保存文件并强制退出vi 编辑

:x                  该命令的功能同命令模式下的ZZ命令功能相同

:e!                  放弃所有修改,从上次保存文件开始在编辑 

在命令模式中,ZZ,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell。

调用外部命令(了解)

输入:“:!外部命令【外部指令写法与在正常终端中执行一样】

vi分屏:vsp、sp(末行模式下使用,前面要加":")

跳到开始:gg

跳到最后:shift + g

合并多行:shift + j

查找关键字:/

查找光标位置单词:shift+8

跳转文件:gf(go file)

跳转回来:ctrl + 6

撤销:u

剪切:dd(剪切光标所处当前行)

多行剪切:ndd(剪切光标所在行及以下共 n 行)

复制:yy(复制光标所处当前行)

多行复制:nyy(复制光标所在行及以下共 n 行)

粘贴:p

粘贴:单击滚轮

选中复制一个连续的字符串:双击

vi/vim中复制借助“y”,删除借助“d”,那么剪贴呢?

剪贴就是在删除之后再粘贴。原来这儿的删除不是真删除,而是放在缓冲区了。

复制
1."yy"     编辑模式下,复制光标所在行内容。
2."nyy"   编辑模式下,复制从光标所在行开始向下数共n行内容。
3.":n1,n2y"    命令行模式下,复制从行标n1开始n2结束所有行内容。

删除
1."dd"     删除光标所在行内容。
2."ndd"   删除从光标所在行开始的n行。
3.":n1,n2d"    删除从行标n1开始n2结束的所有行内容。

剪贴
就是在执行了一个删除操作之后,按下“p”,剪出的内容将粘贴在光标所在行的下面。

其他
1.":n1con2"      将行标n1的内容复制到行标n2的下面。
2.":n1,n2con3" 将行标n1和n2之间的内容复制到行标n3下面。
3.":r 文件名"     将文件所有内容复制到当前文件,插入到光标所在行下面。

撤销
1."u"         撤销前一个操作
2.":e!"       回到文件载入时的状态(前提是在载入后文件没有在vi之外改变),实质是从硬盘载入文件。这在利用多种方式对文件进行编辑时是很有用的。

批量注释:Ctrl V ------ 按向下箭头选中要注释的区域 ------ shift i ------- # ------ ESC

取消批量注释:Ctrl V ------ 按向下箭头选中要注释的区域 ------ delete/d

设置行号:set number

定位某一行:分号 + 空格 + 行号,如“; 12”

vim中使用/禁用鼠标:set mouse

        :set mouse=a(打开鼠标功能)

        :set mouse-=a(关闭鼠标功能)

        mouse参数说明

                // n 普通模式

                // v 可视模式

                // i 插入模式

                // c 命令行模式

                // h 在帮助文件里,以上所有模式

                // a 以上所有模式

                // r 跳过|lit-enter|提示

                // A 在可是模式下自动选择

        'mouse' 的缺省值为空,即不使用鼠标。通常你会用:
                :set mouse=a
        来开始使用鼠标 (这等价于设置 'mouse' 为 "nvich")。如果你只想在若干模式下或者在某两个任务上使用鼠标,你需要专注于那些模式对应的字母。例如:
                :set mouse=nv
        会使得鼠标在普通模式和可视模式下工作。
                :set mouse=h
        会使得鼠标只有在帮助文件里工作 (这样,可以用 "g<LeftMouse>" 来进行标签跳转)。

        鼠标能否在可视模式或者选择模式下开始选择,决定于 "selectmode" 选项包不包括 "mouse"。

        解决鼠标模式右键不能粘贴问题
            用鼠标和可视模式复制/粘贴 ('mouse' 选项必须设置,见上):
                1. 在文本的第一个字符上按鼠标左键,移动鼠标到文本的最后一个字母,然后释放左键。这会启动可视模式并高亮选择区域。
                2. 按 "y" 抽出可视文本到无名寄存器里。
                3. 在要插入的位置上按鼠标左键。
                4. 按鼠标中键(滚轮)。

参考:VIM 进入和退出命令 - 爱学习的小黑 - 博客园

Linux 命令行 快捷键

在操作时,有的时候从其他地方copy一段命令,发现前面多了东西或少了东西,要移动左右键到最前面,改完再移动到最后面,真是麻烦至极,幸好有快捷键,来解决一些这样的问题。

涉及在linux命令行下进行快速移动光标、命令编辑、编辑后执行历史命令、Bang(!)命令、控制命令等。让basher更有效率。

常用

Ctrl + 左右键:在单词之间跳转

Ctrl + A:跳到本行的行首

Ctrl + E:跳到页尾

Ctrl + U:删除当前光标前面的所有文字(还有剪切功能)

Ctrl + K:删除当前光标后面的所有文字(还有剪切功能)

Ctrl + L:进行清屏操作

Ctrl + Y:粘贴Ctrl + U或Ctrl + K剪切的内容

Ctrl + W和Alt + D:对于当前的单词进行删除操作,W删除光标前面的单词的字符,D则删除后面的字符 

Alt + Backsapce:删除当前光标后面的单词

说明

Ctrl + K: 先按住 Ctrl 键,然后再按 K 键;

Alt + K: 先按住 Alt 键,然后再按 K 键;

Esc + K:先单击 Esc 键,然后再按 K 键。

移动光标

Ctrl + A:移到行首

Ctrl + E:移到行尾

Ctrl + B:往回(左)移动一个字符(相当于左键)

Ctrl + F:往后(右)移动一个字符(相当于右键)

Ctrl + XX:(两个X)在命令行尾和光标之间移动

Alt + B:往回(左)移动一个单词

Alt + F:往后(右)移动一个单词

Esc + B:往回(左)移动一个单词

Esc + F:往后(右)移动一个单词

Esc + T:交换光标位置前的两个单词

编辑命令

Ctrl + H :删除光标左方位置的字符

Ctrl + D:删除光标右方位置的字符(注意:当前命令行没有任何字符时,会注销系统或结束终端)

Ctrl + W :由光标位置开始,往左删除单词。往行首删

Alt + D :由光标位置开始,往右删除单词。往行尾删

Esc + D :由光标位置开始,删除单词,直到该单词结束。

Ctrl + K :由光标所在位置开始,删除右方所有的字符,直到该行结束。

Ctrl + U :由光标所在位置开始,删除左方所有的字符,直到该行开始。

Ctrl + Y :粘贴之前删除的内容到光标后。

Ctrl + T :交换光标处和之前两个字符的位置。

Alt + . :使用上一条命令的最后一个参数。

Ctrl + _ :回复之前的状态。撤销操作。

Ctrl + A + K ,或 Ctrl + E + U 或 Ctrl + K + U 组合可删除整行。

查找历史命令

Ctrl + P:显示当前命令的上一条历史命令(相当于上键)

Ctrl + N:显示当前命令的下一条历史命令(相当于下键)

Ctrl + R:搜索历史命令,随着输入会显示历史命令中的一条匹配命令,Enter键执行匹配命令;ESC键在命令行显示而不执行匹配命令。

Ctrl + G:从历史搜索模式(Ctrl + R)退出。

控制命令

Ctrl + L:清除屏幕,然后,在最上面重新显示目前光标所在的这一行的内容。

Ctrl + O:执行当前命令,并选择上一条命令。

Ctrl + S:阻止屏幕输出

Ctrl + Q:允许屏幕输出

Ctrl + C:终止命令

Ctrl + Z:挂起命令(使用‘fg’命令恢复)

重复执行操作动作

Esc – 操作次数 操作动作 : 指定操作次数,重复执行指定的操作。

Bang(!)命令

!! :执行上一条命令。

^foo^bar :把上一条命令里的foo替换为bar,并执行。

!wget :执行最近的以wget开头的命令。

!wget:p :仅打印最近的以wget开头的命令,不执行。

!$ :上一条命令的最后一个参数, 与 Alt - . 和 $_ 相同。

!* :上一条命令的所有参数

!*:p :打印上一条命令是所有参数,也即 !*的内容。

^abc :删除上一条命令中的abc。

^foo^bar :将上一条命令中的 foo 替换为 bar

^foo^bar^ :将上一条命令中的 foo 替换为 bar

!-n :执行前n条命令,执行上一条命令: !-1, 执行前5条命令的格式是: !-5

Have Fun

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐