本教程并不是单纯的 vim
操作介绍,更多的是与 Intellj Idea
进行配合。需要同时具备 Intellj Idea
和 vim
使用基础的同学学习。
01. 简介
Vim
是一个高度可配置的文本编辑器,旨在高效地创建和更改任何类型的文本。它作为“vi
”包含在大多数 UNIX
系统和 Apple OS X
中。Vim 非常稳定,并且正在不断开发以变得更好。
它的特点包括:
-
持久的、多级撤消树
-
广泛的插件系统
-
支持数百种编程语言和文件格式
-
强大的搜索和替换
-
与许多工具集成
为什么要在 Intellj Idea 中使用 Vim?在我们学习某一项新技能,或者新的编程语言,新的编程模式。我们应该自问让我们做出这样的行为的驱动力是什么?学习完它之后它能解决你什么样的疼点问题。这样我们学习起来会更有动力一些。
让我尝试学习 Vim
的理由:
Mac
平台下
Intellj Idea
的很多的常用的
action
都是需要
command + option
这个组合键,从我转到
Mac
下,就一直很懊恼,个人感觉这个按键很反人类。
linux
服务器上去修改服务器的系统配置文件。比如
nginx
配置,这个时候不可避免的需要使用到
vim
编辑器。如果你不熟练 操作起来还是相当的难受的。
在 Intellj Idea
中安装了 vim
插件之后。是一个互补的状态 利用各自的优势 使得编程更有效率。
02. 安装
在 Intellj Idea
中 安装以下三个插件
-
IdeaVim
-
IdeaVim-EasyMotion
-
IdeaVimExtension
发现图标像上面一样编程一个小方块的时候 就代表插件安装成功
03. Vim
不得不说 vim
的学习成本还是有的,典型的入门很难 入门之后就会爱不释手。我这里对一些基础操作进行一些简单的总结和整理。
练习一:方向键联系 hjkl
Vim
最不习惯的当属方向键的移动从原本的 方向键变成了
hjkl
练习二:复制 & 粘贴
CV
大法好,毕竟大家有时候自嘲都是
C V
工程师 ???? 所以 复制 粘贴 还是需要在第一时间学会,这样才能更好的
coding
????。
-
yy
复制当前行 -
p
粘贴
练习三:在学多一点点
在学习一些其他的命令 提交效率。
y p f h c i
-
yy
复制当前行private String username;
-
p
将复制的内容进行粘贴 -
f;
跳转到字符;
处,这里其实就是相当于行位。 -
h
向左移动一个光标 -
ciw
删除当前处的词,并进入插入模式
-
password
输入 password 完成
v j d
GIF 中步骤如下:
-
V
进入内容选择模式 -
kkk
向上移动 3 行,并进行选中 -
d
删除选中部分
块级删除「常用」di* da*
di"
删除"
内的内容,个人感觉这个还是非常常用了。也是初步在效率上优于传统的 intellj idea 的操作方式。如果想要删除之后马上进入插入模式 可以使用 ci"
di(
删除(
内的内容,如果想要删除之后马上进入插入模式 可以使用 ci(
di{
删除
{
内的内容,如果想要删除之后马上进入插入模式 可以使用
ci{
各种进入插入模式
-
i
在光标之前,进入插入模式 -
I
在本行开头,进入插入模式
-
a
在光标之后,进入插入模式 -
A
在本行结尾,进入插入模式
-
o
在本行之后新增一行,并进入插入模式 -
O
在本行之前新增一行,并进入插入模式
-
s
删除当前字符,并进入插入模式 -
S
删除当前行中的所有文本,并进入插入模式
在我最开始的学习 vim 的时候只知道 i
进入插入模式。后面才知道还有这么多种方式。
如果你真的是切换过来之后 这里所有的方式都能用到。
-
a
在光标之后,进入插入模式
-
i
在光标之前,进入插入模式
-
o
在本行之后新增一行,并进入插入模式
-
A
在本行结尾,进入插入模式
-
I
在本行开头,进入插入模式
-
O
在本行之前新增一行,并进入插入模式
练习四:jump
不得不说我们使用 vim 更多的就是为了减少鼠标操作,因为使用鼠标你的手需要离开键盘。
-
[n]f{word}
f
用来查找在当前行 当前光标后是否存在某个字符{word}
如果存在则将光标移动过去 -
$ | ^
$
跳转到行尾^
跳转到行首 -
%
括号匹配跳转() [] {}
-
*
跳转到上一个字符的定位处 -
[n]h/j/k/l
数字加上方向键 代表重复运行多少次 -
2jj 向下移动两行
-
10l 向右移动 10 个字符
-
3kk 向下移动 3 行
-
20h 向左移动 20 字符
-
G | gg
-
G 移动到最后一行
-
gg 移动到第一行
-
H | M | L
-
H 移动到当前页的第一行
-
M 移动到编辑器中部
-
L 移动到当前页的最后一行
-
[n]w
移动到后面 word 的开始位置,前面加上数字 代表重复多少次 -
e
移动到下一个词语的末尾 -
b
移动到上一个单词的开头 -
zz
改变窗口的整体位置,将当前光标所在处 移动到窗口中部
-
[n]f{word}
f
用来查找在当前行 当前光标后是否存在某个字符
{word}
如果存在则将光标移动过去。
-
如果将这里的 f 改为 F 则是反向查找
-
$ | ^
$
跳转到行尾
^
跳转到行首
-
%
括号匹配跳转() [] {}
练习五 学习一些通用场景
其他的比较好用的命令
-
zo | zc
-
dt{char}
04. 配置
在安装了 Vim 之后,其实官方只是给我们了一个基本的架子,能够实现 Vim 的基本操作。如果你想要用的更加顺手,那么你需要对 Vim 进行自己的个性化配置。这是一张白纸,它会被书写成什么样子由你自己决定。
在右下角点击 Vim 图标,然后点击 Open ~/.ideavimrc
基础配置
老规矩,个人感觉对于新手对编辑器进行配置,还是参照社区的常用配置进行使用。当自己对 Vim 更加熟练的时候可以在加入自己的东西
"语法高亮
syntax on
"显示行号
set number relativenumber
"显示光标所在位置的行号和列号
set ruler
set wrap "自动折行
set shiftwidth=4
set tabstop=4
set softtabstop=4
set expandtab "将tab替换为相应数量空格
set smartindent
set backspace=2
set co=5
"设置取消备份 禁止临时文件生成
set nobackup
set noswapfile
" 为IdeaVim插件增加自动切换为英文输入法的功能,
" idea 需要安装 IdeaVimExtension plugin
set keep-english-in-normal
"设置匹配模式 类似当输入一个左括号时会匹配相应的那个右括号
set showmatch
set clipboard^=unnamed,unnamedplus
"set laststatus=2 "命令行为两行
"set fenc=utf-8 "文件编码
"set mouse=a "启用鼠标
"set ignorecase "忽略大小写
set cursorline "突出显示当前行
"set cursorcolumn "突出显示当前列
set fdm=marker
上面当中比较特别的配置就是
-
设置 relativenumber 这样可以看相对行号
-
keep-english-in-normal 这个设置开启之后可以在进入命令模式之后自动将输入法切换为英文。这个还是非常推荐设置的,不然每次从 插入模式 切换到 命令模式的时候 如果这个时候是中文输入法,体验就极差了
-
set clipboard^=unamed,unnamedplus
共享剪切板,Vim 的剪切板和系统的剪切板是隔离的。设置之后可以共享。
Action 配置
-
文件重命名 Rename File
-
重命名变量 或者 类名 RenameElement
-
去到接口实现 GotoImplementation
-
复制 Class 引用 CopyReference
-
...
在 Vim 中可以通过插入命令模式 直接调用 action
RenameElement
Action 重命名变量。
Intellj Idea
的
action
之后,下面分享我自己目前在用的几个比较常用的配置,通过快捷键 调用
action
"jk退出insert模式
inoremap jk <ESC>
let mapleader = '\<space>'
"Idea action 配置
" 重命令元素
nnoremap <Leader>re :action RenameElement<CR>
nnoremap <Leader>gi :action GotoImplementation<CR>
nnoremap <Leader>im :action ImplementMethods<CR>
nnoremap <Leader>rv :action IntroduceVariable<CR>
nnoremap <Leader>cr :action CopyReference<CR>
nnoremap <Leader>em :action ExtractMethod<CR>
nnoremap <Leader>sw :action SurroundWith<CR>
Intellj Idea
中只是的所有的
action
列表
插件配置
其实本来 Vim 中的插件体系是非常强大的,但是因为我们是在 Intellj Idea
中使用 Vim
可以利用很多 Intellj Idea
原本的很多功能。目前我个人还没有发现有很亮眼的插件。所以如果你也正在使用 可以分享一下。
05. 参考文献
GitHub主页:https://github.com/xiaoxiunique
投 稿 通 道
#
让你的博客被更多人看到
如果你在 CSDN、博客园、掘金等平台有写技术博客的习惯,想让自己的原创博客被更多人看到,可以来 Java后端 投稿。
???? 稿件基本要求:
• 文章确系个人原创作品,如果在其他非公众号渠道有过发表也可以,只要是个人原创即可。
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰、语句通顺。
• 如果被采纳的原创稿件,我们将提供稿费以及个人影响力曝光,具体依据文章阅读量和质量结算稿费。
???? 投稿通道:
• 投稿请联系下方微信,备注:原创投稿
△长按添加 Java后端 小编
本文分享自微信公众号 - Java后端(web_resource)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。