Vim常用命令及配置方案
Vim常用命令及配置方案
几句话
很久之前就接触到vim,初学那阵觉得vim很酷炫,但确实对新手不是很友好。我也就简单看了下基本操作就上手了,但又不是长期在vim下工作,这就导致了每一次重新使用vim都要再去回温下基本操作,很是难受,所以就趁这个机会把基本操作都记录下来,一来可以当做自己的笔记,二来希望可以帮到同样和我一样用过vim但却忘得差不多的人。另外,这里也记录一下自己的vim配置,这个配置可能并没有其他网友分享的那么强大,但至少足够简单,能够提高自己编码的效率。
vim常用命令
首先先简单梳理一下vim的工作模式。vim有三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
简单来讲就是,当我们刚打开vim,或者使用vim打开了一个文件,终端上显示着文件的内容,这时候就是命令模式(如上图就是刚打开一个文件的情况,此时光标位于第一行行首处),在现在的情况下,键盘输入小写的i a o 或者大写I A O中的其中一个,就可以进入输入模式,各个按键的具体意义如下:
按键 | 具体意义 |
---|---|
i | 从目前光标所在处输入 |
I | 在目前所在行的第一个非空格符处开始输入 |
a | 从目前光标所在的下一个字符处开始输入 |
A | 从光标所在行的最后一个字符处开始输入 |
o | 在目前光标所在的下一行处输入新的一行 |
O | 在目前光标所在的上一行处输入新的一行 |
r | 继续输入一个字符以取代光标所在处后面单个字符,而后返回命令模式 |
R | 新输入的字符会一直取代光标所在处后面的字符 |
当我们使用上述按键进入输入模式,配合方向键编辑好文件内容后,使用ESC键可退出输入模式,回到命令模式,vim的大部分命令都是在命令模式下使用。
命令模式下的按键十分丰富,主要的操作为光标移动、复制粘贴、搜索替换等
光标移动的基本按键如下:
按键 | 具体意义 |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一行 |
k 或 向上箭头键(↑) | 光标向上移动一行 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
在上面的基础上,如果你想光标的位置一次移动多行或者在同一行上移动多个字符,可以有以下几种方法:
- 直接输入数字并在其后输入相应的方向,例如输入
20j
或20↓
表示光标向下移动20行,输入20l
或20→
表示光标向右移动20个字符。 - 输入数字后加空格可以使光标向右移动n个字符,例如
20[space]
即和上面第一条的20l
或20→
达到相同的效果,为了简单一点,我个人认为如果不是vim深度用户的话,我们可以直接放弃记忆这个命令。同样性质的命令还有20[enter]
,表示光标向下移动20行 ctrl+f/b/d/u
可以用来上下翻页,但是对大部分人来说没有必要去记这个繁琐的命令,我个人更加推荐使用键盘上的Page Up
和Page Down
来上下翻页0
和$
可以用来移动光标到行首或行尾,同样,我还是认为没必要去记忆这个命令,而是直接使用Home
和End
来达到同样的效果
另外,还有一些很方便的操作值得单独拎出来进一下:
按键(区分大小写) | 具体意义 |
---|---|
H(High) | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M(Middle) | 光标移动到这个屏幕的中央那一行的第一个字符 |
L(Low) | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个文件的最后一行(常用) |
gg | 移动到这个文件的第一行(常用) |
nG | 移动到这个文件的第n行 |
复制粘贴的操作比较繁杂,但也并不是没有规律可循,具体如下:
按键 | 具体意义 |
---|---|
x或[delete] | 删除光标后面的单个字符, |
X或[backspace] | 删除光标前面的单个字符 |
nx | 连续向后删除 n 个字符。同理,可以有大写的nX |
dd | 删除光标所在的一整行 |
ndd | 删除光标向下的n行(包括光标那一行) |
d+某个位置 | 删除光标处到那个位置的所有内容。例如d1G 删除从光标到第一行的所有内容,dG 删除从光标到最后一行的所有内容,d$ 或d[End] 删除从光标处到行尾的所有字符。以此类推 |
yy | 复制光标所在的那一行(常用) |
nyy | 复制光标向下的n行(包括光标那一行) |
y+某个位置 | 复制选取的范围,选取范围如前面d+某个位置 所示 |
p | 将已复制的内容在下一行粘贴 |
P | 将已复制的内容在上一行粘贴 |
J | 将光标所在行与下一行的数据结合成同一行,即在删除该行和下一行之间的换行符。 |
u | 复原前一个动作(常用) |
[ctrl]+r | 重做上一个动作(常用) |
.(小数点) | 重复前一个动作(常用) |
搜索替换部分为了简洁一点,就只提一下搜索,替换部分就不涉及了
按键 | 具体意义 |
---|---|
/[要搜索的字符] | 向光标之下寻找一个匹配的字符串。如/int 会搜索匹配int |
?[要搜索的字符] | 向光标之上寻找一个匹配的字符串。 |
在上面搜索字符串的基础上按回车键
,就可使光标跑到搜索到的字符串处,这时输入n
光标就会跳到下一个或上一个匹配的字符串处,具体是上还是下取决于刚才执行的是/string
还是?string
,而输入大写的N
则是与小写n相反的方向。(注意,当执行n
到达文件底部时就会循环跳到顶部,反之亦然)
好了,现在我们已经能够编辑文件内容了,那怎样保存文件呢?一般情况下,当需要保存或退出文件时,我们习惯性按一下ESC键
以进入命令模式(当然如果已经在命令模式下也习惯性按一下吧),这时输入:
加相应的指令就能对文件执行相应的操作,这里需要注意一点的就是,如果你对该文件没有相应的权限,那么执行相关操作将会被拒绝,例如我在ubuntu下想要修改我没有权限的文件,vim会提示权限拒绝,我需要执行sudo vim filename
以root权限进入vim才能修改文件。
按键 | 具体意义 |
---|---|
:w | 保存编辑的内容 |
:w! | 若文件属性为只读,强制保存编辑的内容,需要相应的权限 |
:q | 退出vim |
:q! | 强制离开不保存编辑过的内容 |
:wq | 保存后退出vim |
:wq! | 强制保存后退出vim |
ZZ | 若文件没有改动,则不储存离开,若文件已经被改动过,则储存后离开! |
:w filename | 另存为filename |
:! command | 暂时离开vim到命令行模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息! |
配置方案
这个只是一个简单的vim配置,留下了一些我认为必要的功能,没有那么多花俏的功能,也不像网上一些文章分享的配置成酷炫的IDE,我个人一贯的原则就是简洁明了,使用方便即可。
使用方法:保存成名为.vimrc
的文件放在~
目录下,即用户个人目录下即可。
"********************************************************
" 一般性配置 *
"********************************************************
"关闭vim一致性原则,避免以前版本的一些bug和局限
set nocompatible
"显示行号
set number
"设置在编辑过程中右下角显示光标的行列信息
set ruler
"在状态栏显示正在输入的命令
set showcmd
"设置历史记录条数
set history=1000
"设置取消备份 禁止临时文件的生成
set nobackup
set noswapfile
"设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号
set showmatch
"设置C/C++方式自动对齐
set autoindent
set cindent
"开启语法高亮功能
syntax enable
syntax on
"指定配色方案为256色
set t_Co=256
"设置搜索时忽略大小写
set ignorecase
"实时显示搜索结果
set incsearch
"配置backspace的工作方式
set backspace=indent,eol,start
"设置在vim中可以使用鼠标
set mouse=a
"设置tab宽度
set tabstop=4
"设置自动对齐空格数
set shiftwidth=4
"设置退格键时可以删除4个空格
set smarttab
set softtabstop=4
"将tab键自动转换为空格
set expandtab
"设置编码方式
set encoding=utf-8
"自动判断编码时 依次尝试以下编码
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
"检测文件类型
filetype on
"针对不同的文件采取不同的缩进方式
filetype indent on
"启动智能补全
filetype plugin indent on
"括号自动补全
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i
inoremap < <><ESC>i
Vim常用命令及配置方案的更多相关文章
- Linux 之 Vim常用命令
Vim常用命令 参考教程:[千峰教育] 终端编辑命令工具: vi/vim.emacs等. vim简介: vim是vi的扩展,被誉为终端编辑之神. vim安装: yum install -y vim 工 ...
- linux最强编辑神器vim常用命令大全:编辑、插入、删除、替换、保存...
我说vim是编辑器之神大家没有意见吧 下面分享一些vim常用命令,大家可以收藏一下 进入vim: vim配置: vim中光标移动: vim中屏幕滚动: vim中插入文本类: 文本替换: 格式 : 范 ...
- Vim常用命令总结
Vim常用命令总结: 下文是小编自己整理的关于日常linux vim编程过程中用的一些常用命令,资料参考鸟哥的 如果有需要的小伙伴可以参考一下!(底部有下载地址) 一. 一般模式可用的按钮说明 1.1 ...
- vim常用命令(iOS)
iOS下vim的使用: vim 的三种模式: .一般模式(默认) .插入模式(写文字) .命令行模式(保存) 各种模式的功能区分如下: .一般模式:控制屏幕光标的移动,字符和光标的删除,移动复制某区段 ...
- 实用手册:130+ 提高开发效率的 vim 常用命令
Vim 是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器.这里收录了130+程 ...
- vim常用命令汇总
vim常用命令汇总: http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html 定位 本行第一个字符 ctrl+$ ...
- [转]vim常用命令
[转]vim常用命令 http://www.cnblogs.com/sunyubo/archive/2010/01/06/2282198.html http://blog.csdn.net/wooin ...
- vim常用命令 vim键盘布局
vim键盘布局,vim快捷键 vim常用命令:
- VI/VIM 常用命令
VI/VIM 常用命令=========== 整理自鸟哥的私房菜 ---------- - 移动光标 命令 | 描述----------------------- ...
随机推荐
- 如何使用pgpool failover_stream.sh自己控制选择指定的master节点
集群架构: h236:master h237:standby sync h238:standby sync h239:stadnby async h240:standby async h241:sta ...
- Oracle学习笔记——常用函数总结
在平时写PL/SQL的时候,经常要用到很多系统自带的函数,而这些函数用起来非常好用,但是每次用完以后,就又忘到脑后了,为了加深自己的映象,以及对这些函数做一个全面的总结,就有了今天这篇文章. 首先这就 ...
- Android琐碎知识点集合
1.最近发现android studio更新之后用的v7包,每次创建Activity的时候自动继承的是AppCompatActivity,很不舒服,还是习惯Activity.没什么大的毛病,毕竟goo ...
- Spring Batch 高级-
spring batch / 并行处理 / 多线程 分区 1. 并行处理,多线程,分区 http://blog.csdn.net/github_36849773/article/details/692 ...
- 在HTTP页面输入数据,Chrome 70将显示红色不安全警告
2018年10月17日,Chrome 70版本正式发布,该版本更新多项安全功能,再次升级对HTTP页面的不安全警告样式.当用户在HTTP页面输入数据时,Chrome 70将显示醒目的红色不安全警告,让 ...
- 【Jim】I am back (ง •_•)ง
其实上周就来考过一次试了,真是啥都忘了 (´ー∀ー`) 下午在写[树网的核],写了一半去吃饭,回来时发现高二机房的门被锁上了,于是他们都被堵在门口. 我就回到我的地方接着写码. 听到外面有个高二的妹子 ...
- Python-基础-day5
1.内置函数 2.文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open ...
- java静态方法
静态方法(全局方法)不能访问this(当前对象)它和类没有关系,会有逻辑错误,当调用静态方法的时候不需要创建对象 可以直接为boolean result = MyTest.isPrime();直接访问 ...
- windows下使用libsvm3.2
一.官方介绍 libsvm主页:https://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html libsvm介绍文档:http://www.csie.ntu. ...
- Java String内存释放
Java String内存释放 这是一个坑,Java对于String对象,不进行内存的回收: 处理大数据量的时候,少用String. 与JDK有关系:jdk1.6环境下,内存只占用10M,jdk1.8 ...