Vim编辑器学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xufive/article/details/84997899

前言


有一个有趣的说法,说世界上的程序员分三种,一种使用Emacs,一种使用vim,剩余的使用其它编辑器——完全无视Ultraedit/Notepad++等编辑器的存在。今天,我怀着朝圣的心态,尝试了一下vim这个神器,发现它不像传说中那么深奥神秘和枯燥,也还算较为容易上手。先把学习过程记录在此,和各位同学共享共勉。

Vim的前世今生


Long long ago(上世纪70甚至80年代之前),UNIX用户都是用廉价的终端机通过电话线连到UNIX服务器上的,因为传输速率慢,所以当时的编辑器都是行模式编辑——每次只能显示操作一行。ed是UNIX上最古老最基本的行模式编辑器,ex是ed的扩展,而vi构建在ex之上,并且引入了大家所熟悉的全屏编辑模式。发展至今,vi已成为Linux最常用的编辑器,很多Linux发行版都默认安装了vi。

vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi),但最初,vim是vi IMitation(冒牌的vi)。VIM是一个超级超级强大的文本编辑器,和Emacs一起,被业界视为宇宙中最强大的两个编辑器。

关于Vim,你必须知道的概念


和Notepad++不用,vi(vim)是有模式的。有人总结了很多模式,比如低行模式、normal模式、编辑模式、选择模式、鼠标模式等。我个人觉得,这个说法不科学,倒不如只简单地分为命令模式和编辑模式,而在命令模式下可以把命令分为很多类型。编辑模式下,使用vi(vim)和使用Notepad++几乎一样。当需要设置、保存、查找、替换、定位等操作时,可以切换至命令模式,直接输入命令。任何情况下,按Esc键退回到命令模式;在命令模式下,按i或a键即可进入编辑模式。

除了有模式这个特色之外,vim还有很多高级功能,比如寄存器、宏、书签、映射等。在这里,我们只说一下寄存器。vim里面的寄存器可以用来保存拷贝的文本、记录的宏、设置的书签等等,一般的编辑器都只有一个剪切板(MS Office加入了多个剪切板),而vim和Emacs编辑器中的多寄存器可以实现多个剪切板的功能。vim中有九类寄存器:

  1. 无名寄存器("):最近一次删除/修改/替换操作的文本都会放入这个寄存器
  2. 10个数字寄存器(0-9):拷贝或者删除的文本存入这些寄存器,这些寄存器是循环使用的,在每次存入内容到寄存器1时,原有的内容会依次存入到后一个寄存器中
  3. 小删除寄存器(-):删除内容少于一行时放入这个寄存器
  4. 26个命名寄存器(a-z或A-Z):大小写无关。这些寄存器可以在拷贝或者删除等操作中指定使用
  5. 四个只读寄存器(:.%#):特殊用途
  6. 表达式寄存器(=):特殊用途
  7. 选择和拖放寄存器(*+~):用于与系统剪切板交互,以及接收拖放操作的内容
  8. 黑洞寄存器(_):放到这里面的内容都被丢弃,这样可以删除或拷贝时不影响其它寄存器
  9. 最后一次搜索模式寄存器(/):保存最后一次搜索的正则表达式

在windows环境下体验vim


去vim.org下载windows平台的gvim安装程序(最新版本大概是8.0),安装后运行gvim,估计你会被这样一个界面丑哭(要是你没注意,运行了vim,你可能永远都不想再用正眼瞅它了)。

但是,千万不要轻易放弃,尽管这是一个追求颜值的时代。试试在键盘输入:

:colo murphy

看起来是不是舒服一点了呢?除了murphy,还有很多种风格可选,输入colo按空格,再按Tab,可显示全部风格。继续操作,只需要几行命令,就会让gvim变成这个样子


如果再按装上常用的插件,比如,可以从代码中提取类结构的taglist插件,gvim瞬间就成了这个样子:

vi(vim)常用命令


  • 打开文件、保存、关闭文件
:w              //保存文件
:w file_name    //保存至file_name文件
:q              //退出编辑器,如果文件已修改请使用下面的命令
:q!             //退出编辑器,且不保存
:wq         	//退出编辑器,且保存文件
:x              //退出,如果文件更改则保存
ZZ              //退出,如果文件更改则保存
:e file_name    //编辑文件名为file_name的文件
  • 插入文本或行
a              //在当前光标位置的右边添加文本
i              //在当前光标位置的左边添加文本
A              //在当前行的末尾位置添加文本
I              //在当前行的开始处添加文本(非空字符的行首)
O              //在当前行的上面新建一行
o              //在当前行的下面新建一行
R              //替换(覆盖)当前光标位置及后面的若干文本
J              //合并光标所在行及下一行为一行(依然在命令模式)
  • 移动光标
1. 使用上下左右方向键
2、命令模式下
    h -> 向左
    j -> 向下
    k -> 向上
    l -> 向右
    空格键 -> 向右
    退格键 -> 向左
    回车键 -> 移动到下一行首
    减号键 -> 移动到上一行首
  • 删除、恢复字符或行
x              //删除当前字符
nx             //删除从光标开始的n个字符
dd             //删除当前行
ndd            //向下删除当前行在内的n行
u              //撤销上一步操作
U              //撤销对当前行的所有操作
  • 搜索
/string        //向光标下搜索string字符串
?string        //向光标上搜索string字符串
n              //向下搜索前一个搜素动作
N              //向上搜索前一个搜索动作
  • 跳转至指定行
n+             //向下跳n行
n-             //向上跳n行
nG             //跳到行号为n的行
G              //跳至文件的底部
  • 复制、粘贴
yy             //将当前行复制到缓存区,也可以用 "ayy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务
nyy            //将当前行向下n行复制到缓冲区,也可以用 "anyy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务
yw             //复制从光标开始到词尾的字符
nyw            //复制从光标开始的n个单词
y^             //复制从光标到行首的内容
y$             //复制从光标到行尾的内容
p              //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用"ap进行粘贴
  • 替换
:s/old/new         //用new替换行中首次出现的old
:s/old/new/g       //用new替换行中所有的old
:n,m s/old/new/g   //用new替换从n到m行里所有的old
:%s/old/new/g      //用new替换当前文件里所有的old

配置vim


来吧,就用gvim编辑gvim的配置文件C:\Program Files (x86)\Vim_vimrc(操作系统或许会保护这个文件的读写权限,建议使用系统管理权限运行C:\Program Files (x86)\Vim\vim80\gvim.exe),在后面追加:

"处理文本中显示乱码
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")
  set fileencoding=chinese
else
  set fileencoding=utf-8
endif

"处理菜单及右键菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

"处理consle输出乱码
language messages zh_CN.utf-8

"配色方案:koehler/murphy
colo murphy

"字体设置
"set guifont=courier_new:h12

"总是显示标签。0:不显示;1:多于1个时显示"
set showtabline=2

"开启行号
set nu!

"setnumber"开启自动缩进, 7.3以上版本已自动开启"
set autoindent

"缩进宽度为4个字符"
set shiftwidth=4

"tab宽度为4个字符"
set tabstop=4

"编辑时将所有tab替换为空格"
set et

"按一次Backspace就删除4个空格"
set smarttab

"Gvim启动后窗口最大化
autocmd GUIEnter * simalt ~x

保存退出,再次打开gvim,你会发现世界变得如此美好!

安装taglist插件


第一步,从 https://sourceforge.net/projects/ctags/files/ctags/5.8/ctags58.zip/download 下载ctags,解压后将其中的ctags.exe 复制到gvim.exe 所在的目录,在我这里是C:\Program Files (x86)\Vim\vim80

第二步,从 http://www.vim.org/scripts/script.php?script_id=273 下载taglist.zip文件,解压,将doc\taglist.txt 文件复制到 C:\Program Files\Vim\vimfiles\doc下,
将plugin\taglist.vim 文件复制到 C:\Program Files\Vim\vimfiles\plugin下。

第三步,以管理员身份运行cmd,cd至C:\Program Files\Vim\vim80目录,运行gvim.exe,命令模式下输入":helptags C:\Program Files\Vim\vimfiles\doc",就会在C:\Program Files\Vim\vimfiles\doc下生成tags文件。

第四步,重启gvim.exe,打开一个源码文件,执行命令:Tlist,大功告成。

猜你喜欢

转载自blog.csdn.net/xufive/article/details/84997899
今日推荐