美文网首页工作生活
第九章 vim编辑器

第九章 vim编辑器

作者: 过来摸摸头丶 | 来源:发表于2019-07-04 17:29 被阅读0次

1.vi的使用

vim指令介绍

一般指令模式(command mode)

以vi打开一个文件就直接进入一般指令模式了。

编辑模式(insert mode)

在一般模式可以删除、复制等,但是不能编辑文本内容的。需要按下"i、I、o、O、a、A、r、R"任一个字母后才能进入编辑模式。

指令列命令模式(command-line mode)

在一般模式中输入": / ?"的其中一个就可以将光标移动到最底下那一行。在这个模式中,你可以读取、存盘、批量取代字符、离开vi、显示行号等动作。

1.常用的vi命令

[Ctrl] + [f]  :屏幕向下移动一页,相当于[Page Down];
[Ctrl] + [b]  :屏幕向上移动一页,相当于[Page Up];
0或[Home]键 :移动到这一行最前面到字符处;
$或[End]键 :移动到这一行最后面的字符处;
G  :光标移动到这个文件到最后一行;
gg  :光标移动到这个文件到第一行;
[n] + [Enter]/[G]  :n为数字,光标向下移动n行;
[/] + [字符]  :向光标下方寻找为"字符"的字符串;
[?] + [字符]  :向光标上方寻找为"字符"的字符串;
n  :表示重复上一个搜索的动作;
N  :与n相反,为反向进行前一个动作。例如:/stu,按下N后表示向上搜寻;
: n1,n2s/word1/word2/g  :n1、n2都是数字,表示在n1与n2行之间寻找word1这个字符串并替换为word2。如果不写n1、n2表示对当前行操作,如果是:%s/word1/word2/g表示对全文进行替换;
: n1,n2s/word1/word2/gc :同上,只不过在替换对时候需要用户确认;
x、X :在当前光标,x表示向后删除1个字符,X表示向前删除1个字符;
nx/X :n为数字,表示连续向后/向前删除n个字符;
dd  :删除光标所在对那一行;
ndd  :n为数字,删除光标所在的向下n行;
yy :复制光标所在的那一行;
nyy :n为数字,复制光标所在的向下n行;
p :p为将已复制的数据在光标的下一行粘贴;
u  :撤销,复原前一个动作;
[Ctrl] + [r] :恢复"u"撤销掉的内容;
. :重复前一个动作;
:r filename :读取一个文件filename的内容到当前文件;
:e!   :在做了很多到编辑后,可以还原到原本的文件内容;
:! [command] :不离开vim下,执行命令。例如 :! ls /home。

2.一般指令模式切换到编辑模式到可用按钮

i、I  :进入插入模式。i表示"在光标前插入",I表示在"当前所在行的第一个非空格处开始插入";
a、A :进入插入模式。a表示"在当前光标的下一个字符处开始插入",A表示"从光标所在行的最后一个字符处开始插入";
o、O :进入插入模式。o表示"在当前光标的下一行开始插入",O表示"在当前光标所在处的上一行开始插入";
r、R :进入替换模式。r表示"替换光标所在的那一个字符",R表示"一直替换光标所在的字符",按下r、R后直接输入要替换的字符即可;

3.一般指令模式切换到指令模式

:w :将编辑后的数据保存;
:w! :若文件为只读时,强制写入该文件。写入是否成功,和你的权限有关;
:q  :退出;
:q! :退出不保存;
:wq :保存并退出;
:w + [filename] :将编辑的数据另存新档;
:set nu :显示行号;
:set nonu :取消显示行号;

2.vim的暂存档、救援恢复与开启时的警告信息

当我们正在编辑文件的时候,系统宕机该怎么处理呢?

当我们使用vim编辑时,vim会在当前目录产生一个.filename.swp的文件。你对文件的编辑会被记录到这个暂存档中。

如果我们在vim一个文件的时候,出现"found a swap file by the name xxx.swp"的字样,说明可能有以下几个问题:

问题1:可能有其他人或程序同时在编辑这个文件。由于Linux是多人多任务的环境,所以很可能有很多人同时在编辑一个文件。因此vim会出现这样的警告。

解决1:让别人将他的vim结束,继续你的处理;
解决2:选择开启成为只读文件,也就是在出现警告页面输入"O"即可;

问题2:在前一vim中,因为某些特殊原因导致vim中断

解决:在警告页面你可以按下"R",此时vim会载入xxx.swp的内容。不过要注意的是xxx.swp不会自动删除,需要手动删除,否则每次打开都会出现警告。

这个警告页面有6个按钮信息:

  • [O]pen Read-Only :打开次文件为只读档。

  • [E]dit anyway :正常的方式打开你要编辑的文件,并不会载入存盘的内容,不建议使用,很容易出现多个编辑者同时修改文件的情况。

  • [R]ecover :加载暂存盘的内容。需要手动删除.swp文件。

  • [D]elete it :你确定暂存档是无用的,可以使用它把暂存档删除。

  • [Q]uit :按下q离开vim。

  • [A]bort :忽略这个编辑行为。

3.vim的其他功能

vim具有颜色显示的功能,并且支持许多程序语法。

3.1 区块选择(Visual Block)

我们怎么样搞定一个区块的范围?举个例子,有以下格式的文件:

如果我想把host1,host2等等复制以下,并加到每一行的后面怎么做?也就是每一行的结果是"192.168.1.2 host2.class.net host"。

我们可以使用区块选择,当我们在一般命令模式下按下v或者V或者[Ctrl] + v时,我们会进入区块选择模式。

区块选择的含义:

v :字符选择,会将光标经过的地方反白选择;
V : 行选择,会将光标经过的行反白选择;
[Ctrl] + v :区块选择,可以用长方形的方式选择;
y :将反白的地方复制起来;
d :将反白的地方删除掉;
p :将刚复制的区块,在光标所在处贴上;

现在来实操以下:

1.使用vim xxx.txt打开文件;
2.使用光标移动到第一行到host的h处,然后按下[ctrl] + v,进入Visual Block模式;
3.将光标移动到最底部,此时光标移动过到区域会反白;
4.此时按下y进行复制,反白的地方会消失;
5.将光标移动到第一行的最右边,用编辑模式向后按两个空格键,回到一般命令模式后,按下p进行粘贴;

3.2 多文件编辑

相关的按键有:

:n :编辑下一个文件
:N :编辑上一个文件
:files :列出当前这个vim开启的所有文件

如果想要将刚刚的xxx.txt文件的IP复制到你到/etc/hosts文件中,该怎么操作呢?

1.通过"vim xxx.txt /etc/hosts"指令打开两个文件;
2.在vim中使用":files"查看编辑的文件有哪些,然后按下任意键回到一般命令模式中;
3.在第一行输入"4yy"复制4行;
4.在vim环境下输入":n"会来到第二个编辑的文件;
5.在/etc/hosts文件中按下"G"到最后一行,再按下"p"粘贴;
6.按下多次的"u"来还原原本的文件数据;
7.按下":q"退出;

3.3 多窗口功能

相关功能键:

:sp [filename] :开启一个新窗口。如果想要在新窗口打开另一文件,就加入filename。否则只输入":sp"时,出现的时同一个文件在两个窗口。
[Ctrl] + w + ↓ :注意,按键的按法是:先按下[Ctrl]不放,再按下w后放开所有的按键,然后再按下向下箭头,则可移动到下方到窗口。
[Ctrl] + w + ↑ :同上,光标移动到上面到窗口。
[Ctrl] + w + q :结束当前的窗口。

3.4 vim的挑字补全功能

相关的功能键:

注意:以下的用法都在在插入模式下,输入开头字母在使用以下操作。
[Ctrl] + x -> [Ctrl] + n :通过目前正在编辑的这个"文件的内容文字"作为关键词,补充补齐。
[Ctrl] + x -> [Ctrl] + f :以当前目录内的"文件名"作为关键词,补充补齐。
[Ctrl] + x -> [Ctrl] + o :以扩展名作为语法补充,以vim内建的关键词,补充补齐。

3.5 vim环境设定与记录 ~/.vimrc ~/.viminfo

当我们重复编辑同一个文件,第二次进入文件时,光标就在上次离开的那一行上。为什么会这样?

因为vim会主动将你曾经做过的行为记录下来,记录动作的文件就是:~/.viminfo。

而对vim文件环境的设定,就是编辑~/.vimrc了。以下时vim常见的环境设定参数:

:set nu/nonu :设定与取消行号;
:set hlsearch/nohlsearch :设定是否将搜索的字符串反白;
:set autoindent/noautoindent :设定是否自动锁进;
:set backup :设定是否自动储存备份档。一般是nobackup。
:set ruler :设定是否显示右下角的一些状态栏;
:set showmode :是否要显示"INSERT"之类的左下角的状态栏;
:set backspace=(012) :如果backspace为0或1时,在进入编辑模式后仅能删除刚刚输入的字符,设为2时,可以删除任意值;
:set all :显示目前所有的环境参数设定值;
:set :显示与系统默认值不同的设定参数;
:syntax on/off :是否依据程序相关语法显示不同的颜色;
:set bg=dark/light :设定主题颜色;

以上可以在文件的一般命令模式下设定,如果在~/.vimrc文件中设定的话,去掉":"即可。

.vimrc文件配置

4.vim的使用注意事项

4.1 中文编码问题

关于乱码,你需要考虑以下:

  • 你的Linux系统默认支持的语言数据:这与/etc/locale.conf有关;

  • 你的终端的语言:这与LANG、LC_ALL属性有关;

  • 你的文件原本的编码;

  • 开启终端机的软件;

4.2 DOS与Linux下编码的不同

我们在DOS下的文件使用在Linux下面,就执行不了了。怎么做?

可以下载dos2unix包。

4.3 语言编码转换:iconv

指令介绍:

[~] iconv --list 
[~] iconv -f 原本编码 -t 新编码 filename [-o newfile]

选项与参数:
--list :查看所有支持的编码;
-f :from,原本编码;
-t :to,新编码;
-o file :如果想保留原文件,使用-o + 新档名,可以建立新编码文件;

相关文章

  • 如何进入退出vim编辑器

    注意:linux命令要小写哦! 环境 linux系统 vim编辑器 进入VIM编辑器 VIM编辑器,可以新建文件也...

  • vim简单操作与配置

    vim 编辑器之神Emacs 神的编辑器 vim配置 ~/.vimrc 配置文件 vimplugin 管理vim插...

  • FFmpeg 工程之路-基础开发概述

    章节 熟练使用 Vim 编辑器Vim 编辑器核心理念、使用窍门Vim 处理模式Vim 常用命令Vim 基础命令 C...

  • Linux命令行与Shell脚本编程大全-使用编辑器

    本章内容: Vim编辑器 Emacs编辑器 KDE系编辑器 GNOME编辑器 由于本人常用vim编辑器,所以重点讲...

  • Linux系统学习之:vim编辑器

    Vim编辑器号称编辑器之神,当然系统学习Vim知识量偏多,需要专门整理,此处仅列出少量部分。 Vim编辑器模式: ...

  • vim 使用简介

    vim简介 Vim 是一个具有很多命令的功能非常强大的编辑器。 vim的进入和退出 进入vim编辑器输入:vim文...

  • 第10章 使用编辑器

    10.1 vim编辑器 vi编辑器是Unix系统最初的编辑器。vi improved or vim 是GUN项目的...

  • Linux Day20:Vim

    Vim编辑器 vi的使用 鸟哥书籍:按键的说明、Vim的保存文件、恢复与打开时的警告信息 Vim编辑器:文本编辑器...

  • 实验五

    实验五 使用Vim编辑器对文本进行排版 实验目的 1.初步了解Vim编辑器的原理。 2.初步掌握Vim编辑器的使用...

  • FFmpeg开发--Vim详解

    Vim编辑器Vim处理模式: Vim常用命令: Vim查找与替换:

网友评论

    本文标题:第九章 vim编辑器

    本文链接:https://www.haomeiwen.com/subject/pmichctx.html