Vim攻略 <3> Configuration
<1>仍然没有写完,上班太累了。。。
使用方法: 在command模式下输入命令
" 界面优化
set ruler " 在屏幕下方显示光标坐标
set showcmd " 显示你正在敲的command
set incsearch " 搜索时每敲一个字符,都会跳转至匹配处 (这项建议不要开,跳来跳去太烦人了)
set showmatch " 当输入 } ) 或 ]时, 高亮对应的左括号
set number "显示行号
" 自定义样式
set term=xterm-color " 设置终端颜色
syntax on " 允许代码高亮
color derek " 设置颜色主题,用户定制主题放在~/.vim/colors/下
set guifont=inconsolata\ 12 "字体\字号,用户字体放在~/.fonts/下
" 缩进
set expandtab " 用空格代替tab
set shiftwidth=4 " <<或>> command的缩进距离
set softtabstop=4 " 输入tab后的缩进距离
set tabstop=8 " \t字符所占的字符数(不要和上面弄混了)
set smarttab " 当开启这项功能后,在一行开始输入tab时,会根据shiftwidth来决定缩进距离,无视softtabstop或者tabstop
set columns=88 " 终端宽度
set lines=49 " 终端高度
set autoindent " 自动缩进
set cindent " 根据C语法缩进
" 代码折叠
setlocal foldmethod=indent "折叠方式(根据缩进来折叠)
autocmd FileType c setlocal foldmethod=syntax "对于C source file,根据语法来折叠
autocmd FileType cpp setlocal foldmethod=syntax "同样,对于cpp source file,根据语法来折叠
set foldnestmax=10 " 最多折叠10层
set foldenable " 默认折叠
如果设置了某个功能,想要取消怎么办? 只要输入set no[config]就可以了,e.g. set noincsearch 关闭渐进搜索
不过呢,上面这些设置,只针对某个特定的vim实例,关掉vim以后就会消失的。如果想要永久设置该怎么办?很简单,把对应的command写到~/.vimrc文件里就可以了
最后,推建一个好用的主题: wombat 好用的字体: inconsolata
最后效果大概是这样子的:
Vim攻略 <2> Basic Operations
好吧,其实<1>差不多写完了,只是我对自个儿的文笔非常不满意,所以等润色下再发
下面这张列表,是笔者使用vim editor时经常用回到的一些按键,可以说,这些已经涵盖了90%的日常使用
虽然是用英文写的,不过原作者一定肯定坚决是我~ 吐槽我的英语:evol128@gmail.com
[n]<key> means that this command takes an numeric argument, which repeats the function of the command by n times. n can be omitted. e.g. 3w means move cursor to the beginning of 3rd next words.
<key>· means this key should be followed by another key
# means a line number
All commands except Ctrl commands are case sensitive.
mode selection
esc normal mode
v viusal mode
i insert mode
: command mode
movement
h move 1 char left
l move 1 char right
j move 1 char down
k move 1 char up
当然,十字键也是同样的效果,那为什么我们需要这四个按键呢?我的理解,用这四个键可以省去把手从字母区移开的时间,将工作效率提升至极限
0 begin of line
$ end of line
同样,和home/end是重复的
[n]w move cursor to the begin of next word
[n]e move cursor to the end of current word
G go to last line
#G go to # line
gg go to first line
Ctrl+d scroll half window down
Ctrl+u scroll half window up
Ctrl+f scroll full window down
Ctrl+b scroll full window up
% if coursor on (,),[,] or{,}, go to corresponding braket. else search backwards for the first (, [, or {
简单来讲就是找括号。。。
edit
x delete a char at cursor
d· used with movement operation, delete from cursor to the movement char. e.g. d$ delete from cursor to end of line
s change a char at cursor
c· used with movement operation, delete from cursor position to the movement char,then get into insert mode. e.g. c3w changes from cursor position to next 3 words
i enter insert mode, then you can insert chars into file
undo/redo
u undo
ctrl+r redo
copy/paste
y yank(copy)
p paste
*y/*p yank/paste from clipboard
search/replace
/<pattern> search for pattern
?<pattern> search for pattern backwards
n goto next occurrence of search pattern
N goto previous occurrence of search pattern
%s/<old>/<new>/g replace old pattern with new pattern
file operation
:q quit
:q! quit without save
:w [filename] save file
最后送大家一张图吧 基本上上面这些都标出来了
Vim攻略 <1>Overview
先给大家道个歉,过去一年,一直在忙于私事,所以都没有时间来打理博客。现在,一切都结束了,我也终于有时间来写点东西了
为什么我们需要文本编辑器?
简而言之,fast,strong & convenient
和诸如visual studio, eclipse之类重量级的ide比起来,text editor更加专注在文本编辑这单一的功能上,操作简便(不是简单= =),功能强大,速度飞快。可以说,当你习惯于使用vim或者emacs之后,你的编码效率会有大幅提高
为什么是vim?
其实世上好用的text editor还是挺多的,不过大部分都ask for money,免费的无非就只有vim和emacs而已。这两种编辑器各有优劣吧,vim的单键多模式 vs emacs的单模式组合键(真心不想扯太多,不然要战起来的)。根据o‘reilly的数据,vim教材的销量大概是emacs的2倍多,再加上一点点私人原因(好吧,我承认私人原因是主要原因= =),所以,我就选用vim啦
为什么你要写这篇文章?
首先我想说,vim自带的帮助文件,内容非常详尽,如果有时间的话,请务必去看一下呢。使用方法很简单,在vim中输入:help就好了。只是,这个doc实在是很长很长,而其中的大部分功能,对我们这样的初学者来说,是难得用到一次的。所以,我打算在工作之余,抽出点spare time帮大家把vim中的重要功能都一一整理出来。我的计划是花6-7篇文章的篇幅,由浅入深带着大家在浏览一遍vim的各种feature,之后么,就靠大家自个努力了。
Main Feature: Modes
在vim中,根据所处的mode不同,每个按键的作用也不同,所以,学习vim,第一步是弄清楚vim到底有哪些常用的mode
normal mode (进入方法: esc)
normal mode是vim中最常用的一个mode,文件操作,光标移动,以及大部分的文件编辑都需要在normal mode中进行。
insert mode (进入方法: i或者其他插入操作)
顾名思义,在insert mode中,用户可以向文本光标处输入字符。
visual mode (进入方法: v)
在visual mode中,可以通过移动光标来选择文本
command mode (进入方法: 冒号)
所有命令,都得在command模式中输入。另外,在command mode中还可以通过!来调用外部程序
此外,还有一些其他的mode,因为不是很经常用,就不在这儿介绍了