VIM学习笔记

VIM 学习

[toc]

vim语法

在文本处理中, CR, LF, CR/LF是不同操作系统上使用的换行符.
1. Dos和windows采用回车+换行CR/LF表示下一行,
2. 而UNIX/Linux采用换行符LF表示下一行,
3. 苹果机(MAC OS系统)则采用回车符CR表示下一行.
注:CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D;

filetype plugin indent on 什么含义?

filetype plugin indent on 
相当于
filetype on " 打开文件类型检测功能
filetype plugin on " vim加载文件类型插件
filetype indent on " 允许vim为不同类型的文件定义不同的缩进格式

source命令

功能:使当前shell读入路径为filepath的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
例如,当我们修改了/etc/profile文件,并想让它立刻生效,而不用重新登录,就可以使用source命令,如source /etc/profile。

% 符号什么含义

%在linux中一般代表变量

let 变量赋值的使用

使用 let 进行变量赋值,echo 打印变量的值, unlet 销毁变量。
对于 Vim 选项还可用 set 来更方便地操作,比如 set {option}, set no{option}, set {option}?。 
普通变量可以直接引用,环境变量要加前缀 $、寄存器变量要加前缀 @、Vim 选项要加前缀 &。
变量默认作用域取决于定义的位置,函数内则为函数作用域,外部则为全局变量。 
赋值和引用变量时可以使用 b:,g:,l:,t: 等前缀来指定要操作哪个作用域的变量

按键映射

主要有map,noremap,unmap,mapclear四个 命令,并且有四个前缀i,c,n,v修饰

nore 
表示非递归,见下面的介绍

n 
表示在普通模式下生效

v 
表示在可视模式下生效

i 
表示在插入模式下生效

c 
表示在命令行模式下生效

map 
表示递归的映射

unmap 
表示删除某个映射

mapclear 
表示清除映射

具体用法:
inoremap: 用于insert模式的递归映射
noremap: 用于insert模式的非递归映射,
nnoremap: 用于normal模式的非递归映射,
vnoremap: 用于visual模式的非递归映射.

Leaders 用法

在windows中有些组合键,比如win+d可以关闭所有窗口,win+l可以锁屏,而leader就有点像win键,告诉vim:我要用快捷键了。事实上,我们不关心这个leader是什么,只是需要这么一个“前缀”。(该类比并不恰当,windows中组合键需要一起按,leader只是个前缀,先按leader再按其它的键即可)

设置leader

let mapleader = ","

这样我们就把逗号设置为mapleader(逗号是惯例,比较容易按,也不会影响原来的功能)。然后你就可以这样设置:

nnoremap <leader>d dd

这样你只需要按下,d就等于执行了dd

vim插件管理vundle注意

注意卸载的时候,除了注释掉我们要删除的插件以外,还需要:source %之后运行:Plugin Clean来清除我们之前删除本地下载的残留插件文件。

vim中那些最最常用的配置

(1)颜色设置

    syntax on       "开启代码高亮
    syntax off      "关闭代码高亮
    syntax enable   "开启代码高亮

(2)搜索设置

    set hlsearch    "开启搜索高亮
    set nohlsearch  "关闭搜索高亮
    set incsearch   "输入搜索字符串的同时进行搜索
    set ignorecase  "搜索时忽略大小写

(3)用户界面

    set showmode        "开启模式显示
    set ruler           "开启光标位置提示
    set number      "显示行号
    set nonu            "不显示行号
    set cursorline      "强调光标所在行
    set cmdheight=1 "命令部分高度为1

(4)编辑辅助配置

    set autoindent      "自动缩进
    set noautoindent    "不自动缩进
    set smartindent     "智能缩进
    set autoread        "当文件在外部被改变时,vim自动更新载入
    set showmatch       "显示匹配的括号

常用光标移动按键

1、光标字符操作

    j 向下
    k 向上
    h 向左
    l 向右
    $ 光标移动到行尾(End),注意要按Shift键
    0 光标移动到行首(Home)
    ^ 光标移动到行首第一个非空白字符(Home),注意要按Shift键

2、光标词操作

    w 光标移动到后一词的词首
    W 光标移动到后一词的词首且忽略标点符号
    e 光标移动到后一词的词尾
    E 光标移动到后一词的词尾且忽略标点符号
    b 光标移动到前一词的词首
    B 光标移动到前一词的词首且忽略标点符号

3、光标句操作

    ) 光标移动到后一句的句首
    ( 光标移动到前一句的句首
    % 配合“(”和“)”使用,寻找相匹配的另一半

4、光标行操作

    G 光标移动到文档的最后一行的第一个非空白字符
    nG 光标移动到文档的第n行,相当于”:n”
    gg 光标移动到文档的第1行的第一个非空白字符,相当于”1G”,也相当于”:1″
    光标向下移动N行

5、光标段操作

    } 光标移动到下一段的段首
    { 光标移动到上一段的段首
    % 配合“(”和“)”使用,寻找相匹配的另一半

6、光标页操作

    Ctrl+f 向下翻页(Pagedown)
    Ctrl+b 向上翻页(Pageup)
    Ctrl+d 向下翻半页
    Ctrl+u 向上翻半页
    H 光标移动到目前显示页的第一行
    M 光标移动到目前显示页的中间行
    L 光标移动到目前显示页的最后一行

7、光标自由操作

    Ctrl+o 回到光标的上一位置

常用编辑操作按键

1、删除操作(delete)

    dd 删除光标所在行
    ndd 删除从光标所在行开始,向下的n行
    d1G 删除从光标所在行开始,到第一行的所有行
    dG 删除从光标所在行开始,到最后一行的所有行
    d$ 删除从光标所在位置,到行尾的所有字符
    d0 删除从光标所在位置,到行首的所有字符

2、复制操作(yank)

    yy 复制光标所在行
    nyy 复制从光标所在行开始,向下的n行
    y1G 复制从光标所在行开始,到第一行的所有行
    yG 复制从光标所在行开始,到最后一行的所有行
    y$ 复制从光标所在位置,到行尾的所有字符
    y0 复制从光标所在位置,到行首的所有字符

3、粘贴操作(paste)

    p 小写字母p,粘贴剪贴板中的数据,从光标所在行的下一行开始
    P 大写字母P,粘贴剪贴板中的数据,从光标所在行的上一行开始

4、撤销与重做操作(undo,redo)

    u (Undo)撤销上一个操作
    Ctrl+r (Redo)重做上一个操作

5、重复操作

    . 重复上一操作

6、替换操作(replace)

    r 替换光标所在处字符
    R 进入替换模式,直至按ESC退出
    cc 替换光标所在行
    cw 替换光标所在的英文单词
    ~ 转换大小写

7、排版操作

    :le 光标所在行左对齐
    :ri 光标所在行右对齐
    :ce 光标所在行居中

常用多缓冲区操作按键

1、多文件编辑模式

    argument list模式,就是在打开vim编辑器时,携带多个文件路径参数。
    buffer list模式,就是在进入vim编辑器后,打开多个缓冲区进行编辑。

2、单一缓冲区打开多个文件

    :files 显示目前打开了哪些文件
    :n 切换到下一个缓冲区内容
    :N 切换到上一个缓冲区内容
    :2n 切换到下下个缓冲区内容
    :bn 下一个缓冲区内容(buffer next)
    :bp 上一个缓冲区内容(buffer previous)

3、多个缓冲区打开多个文件

    :sp [filename] 打开一个新的缓冲区,如果有filename则内容为该文件,否则为当前文件
    Ctrl+w n 新建一个缓冲区
    Ctrl+w q 退出光标所在的缓冲区
    Ctrl+w j 光标移动到下一缓冲区
    Ctrl+w k 光标移动到上一缓冲区
    Ctrl+w l 光标移动到右一缓冲区
    Ctrl+w h 光标移动到左一缓冲区
    Ctrl+w v 左右切割窗口新建缓冲区
    Ctrl+w s 上下切割窗口新建缓冲区
    Ctrl+w o 使光标所在缓冲区最大化,其他缓冲区隐藏

常用搜索与书签操作快捷键

1. 搜索字符串

/string 向下搜索字符串“string”
?string 向上搜索字符串“string”

2. 重复上次搜索

n 根据上次搜索条件找到下一个匹配的字符串N 根据上次搜索条件找到上一个匹配的字符串

3. 搜索单词

* 向下搜索光标所在处的单词(完全匹配)# 向上搜索光标所在处的单词(完全匹配)g* 向下搜索光标所在处的单词(部分匹配)g# 向上搜索光标所在处的单词(部分匹配)

4. 标记书签(mark)

ma a为小写字母,为光标所在处设定文档书签amA A为大写字母,为光标所在处设定全局书签A

5. 使用书签(mark)

`a 到文档书签a处,Tab键上方'a 到文档书签a所在行行首处,Enter键左边`A 到全局书签A处,Tab键上方'A 到全局书签A所在行行首处,Enter键左边`n 如果n=0,缓冲区将打开上一次的文档,且光标在上次编辑最后的位置,1-9以此类推'n 如果n=0,缓冲区将打开上一次的文档,且光标在上次编辑最后的位置所在行的行首,1-9以此类推

6. 查看书签列表

:marks 查看当前所有书签

关于加密

1、加密你的文本文件

当你用vim打开或新建一个文件时,如果加上-x参数,即:

vim -x filename

那么vim会提示你:

Enter entryption key:

当你输入了密码后,vim会提示你重复输入以确认:

Enter same key again:

你在设置密码的时候,是以*来显示的,非明文。当下次有人(包括你自己)打开该文件的时候,vim就会提示:

Need encryption key for "main.cpp"
Enter encryption key:

这时你只要输入你之前所设置的密码就可以了。如果你输入的密码是错误的,vim并不会提示你密码错误,而是显示一堆无意义的垃圾代码。

2、解除加密与重设密码

打开你已经加密的文件,然后输入:

:set key=

这样,你的密码就被设置为空了,今后进入就不再需要输入密码了。而如果你向重设密码的话,你可以输入:

:X

注意是个大写字母X。这时vim会提示你,只要反复输入两次新的密码就可以了:

Enter entryption key: *****
Enter sanme key again: *****

3、加密引起的问题

vim的加密功能,可以说是问题一大堆。比如:

(1)如果密码输入错误,vim不会拒绝访问者编辑文件。在这种显示乱码的情况下编辑文件并保存,整个文件就会变得混乱不堪,无法辨识。今后即使使用正确的密码打开文件,也看不到正确的文档了。

(2)如果对一个需要编译的源代码文件进行了加密,则无法通过编译器的语法检查。

(3)交换文件是无法加密的。这样引起什么问题?问题就是如果其他用户想办法读取到了你的交换文件,就可以绕过解密环节,你的加密也就无意义了。解决的办法就是,不使用交换文件。方法有三个,一是修改你的vimrc文件(vim配置文件):

set noswapfile

二是在用vim打开文件之初就输入命令:

vim -x -n filename

(注意-x是加密参数,与我们所说的swap没有关系,不要搞混)

三是在进入vim编辑该文件后,输入:

:setlocal noswapfile

不过不使用交换文件的坏处就是,你可能会面临数据丢失而无法找回的悲剧。所以又想用加密,又想不丢失文件的朋友们,就勤按“:w”吧。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

  • http://einverne.github.io/post/2015/05/vim-notes.html#adv...
    JosephDHF阅读 412评论 0 0
  • 按功能划分出命令 光标移动 w移动光标到下一个单词的词首,b移动光标到上一个单词的词首;e移动光标到下一个单词的结...
    清水芦苇阅读 611评论 0 0
  • 备注:I am a beginner ,本文所有权益归以下链接原作者所有!!!! 简明Vim练级攻略酷壳—Cool...
    沈祥佑阅读 361评论 0 3
  • 前言 这是一篇学习笔记,用于知识备忘。 一、vim介绍 1.vim是Linux下的一个文本编辑工具,即用于在控制台...
    dounine阅读 362评论 0 1
  • vim是一个非常强大的编辑器,有非常多的命令可以运行。vimtutor是用来简单介绍一些足够你把vim当做一款全能...
    rrrrrun阅读 2,798评论 2 6