1. vim

[TOC]

vim有3种模式:

  1. 一般模式(NORMAL):会在屏幕的底部显示文件名或者是空白。在打开vim 时默认处于一般模式。可以执行大量操作。
  2. 输入模式:底部会显示–INSERT–
  3. 命令行模式:键入:进入。
  4. 可视模式:底部显示的是–VISUAL–。可使用 d 删除选择内容,y 复制选择内容。
    1. v:进入字符选择模式。
    2. Shift+v:进入行选择模式
    3. Ctrl+v:进入块(区域)选择模式
  5. 搜索模式:键入/ (正向查找)或 ?(反向查找) 进入。按nN 进行正向或反向遍历。
    • \*:查找光标所在位置的单词。
    • :n1,n2s/word1/word2/g:在第n1和第n2行之间,查找word1这个字符串,并用word2来替换。
    • :1,$s/word1/word2/g:在整个文件中,查找word1这个字符串,并用word2来替换。
    • :n1,n2s/word1/word2/gc:在替换前询问使用者是否替换(conform)。

无论编辑器当前在什么模式, 按下 Esc 键,它都会回到一般模式。有时需要按两次Esc

一般模式下移动光标:

快捷键 h/ j//Enter k/ l/ ^/0 $ w b G
含义 左移 下移 上移 右移 行首 行尾 下一个单词 上一个单词 最后一行
快捷键 H M L
含义 光标移到屏幕最上方那一行 光标移到屏幕中间那一行 光标移动到屏幕最下方那一行
快捷键 gg nG n$ Ctrl+o f/F <字母>
含义 第一行 第n行行首 第n行行尾 回到上一次光标所在位置 向后/前搜索字母并移动光标
快捷键 Ctrl+f/PgDn Ctrl+b/PgUp Ctrl+d Ctrl+u
含义 屏幕向下移动一页 屏幕向上移动一页 屏幕向下移动半页 屏幕向上移动半页
快捷键 << >> Ctrl+l Ctrl+g
含义 整行向左缩进 整行向右缩进 刷新屏幕(load) 显示文件状态,行数、行号等

一般模式下对文本进行删除:

x/Delete X/BackSpace d^ d$/D dd dw/daw/dnw dG d1G
含义 删除光标所在的字符 删除光标前的字符 删除至行首 删除至行尾 删除/切剪当前行 删除1/n个单词 删除至文档结尾 删除至文档首部

还可以在命令前加上数字,表示执行多次相同操作。如5dd表示删除5行。

其他命令:

J u/u {n} Ctrl+r Shift+z+z . ~
含义 删除换行符 撤回1/n次修改 redo,反撤回 保存并退出 重复上一次操作 大小写转换
yy y^/y0 p P ddp
含义 复制当前行 复制到行首(不含光标) 粘贴到光标后 粘贴到光标前 交换光标所在行与下面一行
r <字符> R cc C
含义 替换光标处的字符 连续替换,直到按Esc 删除当前行并进入插入模式 删除至行末并插入

把光标移到一个括号(()/{}/[])上,按 % 可以快速将光标移动到与其匹配的另一个括号上。

从一般模式进入插入模式:

快捷键 i I a A o O
含义 当前光标 行首插入 光标后插入 行尾插入 在当前行下面插入新行 在当前行上面插入新行

1.1.1. 命令行模式

在命令行模式下,可以使用 :! 外部命令 执行外部的shell命令。如 :! ls 显示当前目录内容。

:ce :ri :le
含义 是本行文本居中(center) 靠右(right) 靠左(left)
:10,50d :1,.d :.,$d :10,50y
含义 删除10到50行 删除文件首行到当前行 删除当前行到尾行 复制10到50行
5,10co56 :5,10m56
含义 复制5-10行到56行下 移动5-10行到56行下

命令模式下,常用命令:

w w <文件名> wq q q! e <文件路径>
含义 保存修改 另存为 保存修改并退出 退出 不保存,强制退出 打开相应文件
r <filename> n1,n2 w <filename> e!
含义 将filename中的内容插入当前行的后面 将n1到n2行的内容保存到filename中 将文件还原到最初状态

进行设置:

set nu set nu? set shiftwidth=10 set all
含义 显示行号 查看"显示行号"的属性 设置缩进为10 显示所有设置

要获取帮助命令,输入:help 或者按下 F1 键。 vim 会显示一个帮助概览的窗口。

1.1.2. 同时编辑多个文件

vim a.txt b.txt:默认进入a.txt的编辑页面。

  • :n:向后切换到b.txt的编辑页面。可以使用:n!进行强制切换,即不保存修改。
  • :N:反向切换

常用命令:

  • :e 3.txt:打开新文件

  • :e#:回到前一个文件

  • :files:列出目前这个vim打开的所有文件

  • :ls:列出以前编辑过的文档

    :ls
      1 #    "a"                            line 1
      2 %a   "tp.py"                        line 7
    
  • :b tp.py 或者 :b 2:直接进入tp.py进行编辑

  • :f:显示正在编辑的文件名

  • :f new.txt:将当前正在编辑的文件copy一份,命名为new.txt,需要:w保存后才会正在创建。

1.1.3. 视窗操作

vim可以在一个界面中打开多个窗口进行编辑,这些编辑窗口称为vim的视窗。

常用命令:

  • new:打开一个水平视窗。
  • sp 1.txt:打开新的水平分屏视窗来编辑1.txt。省略文件名,表示两个窗口为同一文件内容,同步显示。
  • vsp 2.txt:打开新的垂直分屏视窗来编辑2.txt
  • Ctrl+w s:将当前窗口分割成两个水平的窗口
  • Ctrl+w v:将当前窗口分割成两个垂直的窗口
  • Ctrl+w q:即 :q 结束分割出来的视窗。如果在新视窗中有输入需要使用强制符!即:q!
  • Ctrl+w o:打开一个视窗并且隐藏之前的所有视窗
  • Ctrl+w j:移至下面视窗
  • Ctrl+w k:移至上面视窗
  • Ctrl+w h:移至左边视窗
  • Ctrl+w l:移至右边视窗
  • Ctrl+w J:将当前视窗移至下面
  • Ctrl+w K:将当前视窗移至上面
  • Ctrl+w H:将当前视窗移至左边
  • Ctrl+w L:将当前视窗移至右边
  • Ctrl+w -:减小当前视窗的高度
  • Ctrl+w +:增加当前视窗的高度

1.1.4. 其他

vim的配置文件为~/.vimrc

由于断电等意外原因没有保存文档,可以使用vim -r 进入文档后,按:ewcover a.txt 来恢复a.txt文件。

当编辑一个文件时,在这个文件所处的目录底下就会有一个临时文件,文件名为 编辑的文件名.swp,这是一个隐藏文件, 所有修改都会暂时存在这个文件中。在编辑过程中,系统或者 vi 非正常关闭了,那么再重新用 vi 打开这个文件时,系统就会询问是否『Recovery』。按下 R ,就可以将数据回复到修改 ,就可以将数据回复到修改过程的样子,再将 swp 文件删除。

vim -x a.txt:对a.txt进行加密,需要保存后才能生效。

vim的“死机”现象:vi 编辑结束后执行存盘操作,结果导致屏幕卡死,输入任何信息都 再有显示(死机,终端死机)。原因是 vi 编辑结束后按下 Ctrl+S,因为 Windows编辑器一般设置 Ctrl+S热键的动作为 Save ,但 Linux 却进入流量控制状态。解决方法是按下 Ctrl+Q 后流量控制解除。

流量控制:终端的显示速度跟不上主机的发送速度,需要对主机发送的内容进行暂停显示。

意外终止问题:vi 编辑结束后存盘,程序意外中止,编辑成果丢失,文件内容未发生变化。原因是vi存盘命令为 Shift+z+z, 结果按错成 Ctrl+z+z,而Ctrl+z按键导致当前运行程序被挂起(suspend),暂停了运行。解决方法:调用bash作业的管理机制,恢复运行stopped状态的进程:

  • jobs:列出当前被Stopped的进程
  • fg %1%1:将1号作业恢复到前台(foreground)运行

1.1.5. 多行编辑

多行插入:

  1. Ctrl+V 进入visual模式
  2. 选定相关行数,可以使用上下键 ,也可以使用Shift+G 等快捷键
  3. I(大写的i),进入编辑模式,编辑相应内容
  4. ESC 键,刚才的操作会应用到选中的所有行。
Copyright @appwhy all right reserved,powered by Gitbook文件更新于: 2020-10-25 16:26:59

results matching ""

    No results matching ""