Vim大法好!

Posted 生信星球

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vim大法好!相关的知识,希望对你有一定的参考价值。

今天是生信星球陪你的第51天


    你想找辆共享单车,发现满街都是别家车,没有一辆你能骑。

  你想学点生信,搜了“初学者教程”,满眼尽是高大上,没有一句能看懂。

  终于你跨越茫茫宇宙,来到生信星球,发现了初学者的新大陆!



豆豆这一个周系统地学习了Linux,现在慢慢分享出来,今天介绍Vim

Vim编辑器:

Vi : Visual Interface; Vim: Vi Improved
-- 文本编辑器:编辑纯 ASCII 的文档,没有多余的修饰符
-- vim是一种全屏编辑器,模式化编辑器

一、模式:

  1. 【默认】编辑模式(命令模式)—执行命令

  2. 输入模式—输入文本

  3. 末行模式—执行待定命令

模式切换

  • 编辑模式-->输入模式:

i:在当前光标所在字符的前面,转为输入模式;
a:在当前光标所在字符的后面,转为输入模式;
o:在当前光标所在行的下方,新建一行,并转为输入模式;

I:在当前光标所在行的行首,转换为输入模式
A:在当前光标所在行的行尾,转换为输入模式
O:在当前光标所在行的上方,新建一行,并转为输入模式;

  • 输入模式 --> 编辑模式 Esc

  • 编辑模式 -- > 末行模式 :

例如:

  1. 删除第10行,直接在 后输入 10d

  2. 删除第10-12行,输入10,12d

  3. 设置行号:set nu

  4. 不退出使用shell:比如在vim中想查看/etc目录下文件
    ! ls /etc

二、文件打开与关闭

  • 打开文件

vim +# file : 打开后直接处于第#行
vim + file : 打开后处于最后一行
vim + /PATTERN: 打开文件,定位到第一次被PATTERN匹配到的行首

  • 关闭文件

# 1、末行模式关闭文件
:q  退出
:wq 保存并退出=:x
:q! 不保存并退出
:w 保存
:w! 强行保存  # 只读文件, 只有管理员可以强行保存

# 2、编辑模式下退出
ZZ:保存并退出

三、移动光标

  1. 逐字符:

h:左     l:右
j:下     k:上
<数字>[h/j/k/l]:移动n个字符

  1. 逐个单词:

w:移至下一个单词的词首
e:跳至当前或下一个单词的词尾
b:跳至当前或前一个单词的词首
<数字>w:跳n个单词

  1. 行内跳转:

0:跳至绝对行首
^:跳至行首的第一个非空白字符
$:跳至绝对行尾

  1. 行间挑战:

<数字n>G:跳转至第n行;
G:跳至最后一行
末行模式下,直接给出行号,回车即可

四、翻屏

Ctrl+f:向下翻一屏
Ctrl+b:向上翻一屏
Ctrl+d:向下翻半屏
Ctrl+u:向上翻半屏

五、删除

  • 删除单个字符

x:删除光标所在处的单个字符
<数字>x:删除光标所在处及向后的共n个字符

  • 删除多个或整行

d命令可以跟跳转命令组合使用, 如:dw, de, db, d$
dd:删除当前光标所在行
<数字>dd:删除包括当前光标所在行在内的n行,然后跳到下一行;

末行模式下: Start,End d
.表示当前行
$最后一行
$-n:倒数第n行

+<数字>:向下的n行
删除的内容可以撤销,最后一次删除的内容可以粘贴g

  • 先删除,再转为输入模式 —与d类似

修改命令(change) c --> 比如输入cc,那么整行删除然后直接可以输入

六、小操作

  • 粘贴 p/P

p:如果删除或复制为整行内容,则粘贴至光标所在行的下方;
   如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
P:如果删除或复制为整行内容,则粘贴至光标所在行的上方;
   如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面;

  • 复制 y — 与d类似

  • 替换

r : 替换单个字符,[#]r<chr> r后面要接上替换的字符;前面[#]就是输入一个数字,表示将后面那个字符替换几次,可以不填
R: 一次实现多个替换

  • 撤销操作 u ,可以按多次
    如果多撤销了一次,可以还原上一次撤销 ctr + r

  • 重复上一次操作 .

  • 可视化模式
    v : 按字符选取

  • 与shell交互

    :! COMMAND

七、查找替换

  • 查找

/PATTERN:从当前往后找
?PATTERN:从当前往前找
n:往后跳转     N:往前跳转

  • 查找并替换
    在末行模式下使用s命令(和 sed 一样)

s /PATTERN / STRING / [g,i]
g: 全局替换; i忽略大小写 。 二者可以同时使用
%: 表示全文查找、替换

# 例如:从当前行到倒数第二行,查找所有的小写sh替换成大写的SH
: .,$-1s/sh/SH/g
# 又如:将/etc/server.repo文件中的ftp://instructor.com/pub替换为http://172.16.0.1/yum 【这里的文件是虚拟的,只为演示】
# 这里有个小技巧,可以使用# @等符号代替/,这样就不用转义了
:%s#ftp://instructor.com/pub#http://172.16.0.1/yum#g

八、多文件处理 [熟练了会很常用]

1.使用VIM编辑多个文件

vim FILE1 FILE2 FILE3
:next 切换至下一个文件
:prev 切换至前一个文件
:last 切换至最后一个文件
:first 切换至第一个文件
退出
:qa 全部退出
 

2.分屏显示一个文件

Ctrl+w,松开后按, s:水平拆分窗口
Ctrl+w,松开后按, v:垂直拆分窗口

在窗口间切换光标:
Ctrl+w,松开后按,ARROW(上下左右键)

:qa 关闭所有窗口
 

3.分窗口编辑多个文件

vim -o :水平分割显示
vim -O :垂直分割显示
 

4.将当前文件中部分内容另存为另外一个文件

末行模式下使用w命令
:w
:ADDR1,ADDR2w /path/to/somewhere
 

5.将另外一个文件的内容填充在当前文件中,合并两个文件

:r /path/to/somefile

九、高级设定

1.显示或取消显示行号(仅对当前vim进程有效)

# number=nu
:set nu
:set nonu
 

2.忽略或区分字符大小写【不常用】

# ignore character =ic
:set ic
:set noic
 

3.设定自动缩进

# autoindent = ai
:set ai
:set noai
 

4.查找到的文本高亮显示或取消

:set hlsearch
:set nohlsearch
 

5.语法高亮

:syntax on
:syntax off
 

6.编辑配置文件

/etc/vimrc:对所有用户都生效
~/.vimrc:对当前用户生效
 

7.想学习VIM的使用?请使用内置的vimtutor!

十、小问题

有时用vim编辑没有保存就关上了shell,那么下一次再打开会警告:
让你选择用只读方式打开、强行编辑、删除、退出等
而且每次都会提醒,此时会发现在原始文件file旁,会有一个新的file.tmp文件,
将它删除就不会再提示了


    初学生信,很荣幸带你迈出第一步。

    我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。需要帮助或提出意见请后台留言或发送邮件到Bioplanet520@outlook.com~



以上是关于Vim大法好!的主要内容,如果未能解决你的问题,请参考以下文章

为什么要选择Sublime Text3?

AJAX相关JS代码片段和部分浏览器模型

vim大法

Vim的移动大法

vim快速删除当前所在行光标的上下左右大法

VIM实用指南光标移动大法汇总