vim

如何让 Vim 成为我们的神器

2017-10-24

(点击上方公众号,可快速关注)

来源:枫上雾棋

segmentfault.com/a/1190000011466454

如有好文章投稿,请点击 → 这里了解详情

Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持续分享一个前端工作者不得不安装的一些插件,而关于 Vim 的简介,主题的选择,以及为何使用 vim-plug 来管理插件等内容,有兴趣的同学下来可以自己了解和对比下

安装

sudo apt-get install vim // Ubuntu

其他平台,可以自行谷歌

新手指南

vimtutor // vim 教程

上面是史上最简单,最全面的 Vim 基础教程,至今无人超越

下面是作者基于上面的归纳

移动光标

hjkl

2w 向前移动两个单词

3e 向前移动到第 3 个单词的末尾

0 移动到行首

$ 当前行的末尾

gg 文件第一行

G 文件最后一行

行号+G 指定行

<ctrl>+o 跳转回之前的位置

<ctrl>+i 返回跳转之前的位置

b、3b、w、3w:向前\后移动几个单词,标点也算一个单词。相应的大写状态为不含标点,即只把空格和换行符作为单词间隔符。

$:移动到行尾 3$:移动到3行后的行尾

^:移动到行首,0也是

+:移到下一行的行首

-: 移到上一行的行首

f:搜索命令,小写时向后搜索(用来定位)如 fx:定位到下一个x上。 Fx:定位到上一个x上,重复时,可用;或, 不过 , 表示反方向

%:跳到相对应的括号上,编程时常用

33G:跳转到33行 此时按``可以返回到原来行

gg:文件头 G: 文件尾

30%:跳转到文件的30%处

"H"意为Home, "M"为Middle, "L"为Last. 当前屏幕的上中下位置,大小写皆可

Ctrl+G:显示当前位置

set number:设置显示行号,set nonumber:关闭显示

:set ruler 设置在窗口右下角显示行号,与上面的好处是,节省空间

ctrl+u\d 向上\下滚动半屏

ctrl+e\y 向上\下滚动一行

ctrl+b\f 向上\下滚动一屏  这个比较实用,记住。

zz:将当前行滚动于屏幕中间,方便查看上下文 zt置顶,zb置尾

/string 查找string,回车后,按n键可以跳到下一个,N上一个,另外按/键后,按上下键可以找到以前查找的记录,同样的 :也有记录

?/string 同上,默认向上查找

:set ignorecase 大小写无关

:set noignorecase 大小写敏感

  • :查找下一个光标所在单词 #是查找上一个

:set hlsearch 高亮显示查找结果

:set nohlsearch 取消高亮

:nohlsearch 去掉当前显示的高完(一次性)

`` 上次光标停靠的行

% 匹配到相应括号处

向右移动本行一段距离 << 向左移动本行一段距离 3<< 把下面3行(包括本行),向左移动一段距离 :20,30>> 把20行到30行向右移动一段距离

退出

<esc> 进入正常模式

:q! 不保存退出

:wq 保存后退出

删除

x 删除当前字符

dw 删除至当前单词末尾

de 删除至当前单词末尾,包括当前字符

d$ 删除至当前行尾

dd 删除整行

2dd 删除两行

修改

i 插入文本

A 当前行末尾添加

r 替换当前字符

o 打开新的一行并进入插入模式

i 在光标前插入

I 在行首插入

a 在光标后插入

o:在当前行的下面另起一行,并变为插入模式

O:在当前行上面另起一行,变为插入模式

Ctrl+o:临时变成命令模式(一次而已)

:10,20y 回车即可,相应的删除也是如此 :10,20d (此方法比上面两种方法更简单)

:10,20 m 30 把10行到20行的内容,剪切到30行之后

:10,20 co 30 把10行到20行的内容,复制到30行之后

将光标放在 { 处,然后输入v%就可以把大括号中内容选定

撤销

u 撤销

<ctrl>+r 取消撤销

复制粘贴剪切

v 进入可视模式

y 复制

p 粘贴

yy 复制当前行

dd 剪切当前行

状态

<ctrl>+g 显示当前行以及文件信息

查找

/ 正向查找(n:继续查找,N:相反方向继续查找)

? 逆向查找

% 查找配对的 {,[,(

:set ic 忽略大小写

:set noic 取消忽略大小写

:set hls 匹配项高亮显示

:set is 显示部分匹配

替换

:s/old/new 替换该行第一个匹配串

:s/old/new/g 替换全行的匹配串

:%s/old/new/g 替换整个文件的匹配串

执行外部命令

:!shell 执行外部命令

.vimrc

.vimrc 是 Vim 的配置文件,需要我们自己创建

cd Home // 进入 Home 目录

touch .vimrc // 配置文件

Unix

vim-plug

Vim

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \

https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Neovim

curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \

https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

其他平台,可以查看 vim-plug

基本配置

取消备份

set nobackup

set noswapfile

文件编码

set encoding=utf-8

显示行号

set number

取消换行

set nowrap

显示光标当前位置

set ruler

设置缩进

set cindent

set tabstop=2

set shiftwidth=2

突出显示当前行

set cursorline

查找

set ic

set hls

set is

左下角显示当前 vim 模式

set showmode

代码折叠

启动 vim 时关闭折叠代码

set nofoldenable

主题

syntax enable

set background=dark

colorscheme solarized

插件配置

树形目录

Plug 'scrooloose/nerdtree'

Plug 'jistr/vim-nerdtree-tabs'

Plug 'Xuyuanp/nerdtree-git-plugin'

autocmd vimenter * NERDTree

map <C-n> :NERDTreeToggle <CR>

let NERDTreeShowHidden=1

let g:NERDTreeShowIgnoredStatus = 1

let g:nerdtree_tabs_open_on_console_startup=1

let g:NERDTreeIndicatorMapCustom = {

\ "Modified"  : "✹",
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 活点进去男士内裤哦的科技发达不打击哦发if不然不饿可哦就删吧巴萨不急超大酒吧玩不打击饭卡瑞卡v的包低端局饿不饿好疯...
    sgyui阅读 1,163评论 0 0
  • 冷雨入秋悲 擎风刃 写伤回荣华褪 碧叶碎 心亦灰叹身世浮萍 辗转沧泱百味何曾妄 宫阙重堆 忽如一夜 夜残衣袂袖起长...
    梦饮千樽月阅读 3,751评论 0 50
  • 又一次从梦中惊醒,已是夜里一点,这是你离开的第一百零一天 同样的梦,整整做了一百天,算上这次,一百零一夜,夜夜无眠...
    文刀咸生阅读 3,304评论 0 0