Page Actions
Wiki Actions
User Actions
Submit This Story

Vi Cheatsheets

整理收集一些vi常用命令,备忘。

移动

水平方向


  • ⇒ .or. l 右移一个字符
  • ⇐ .or. h 左移一个字符
  • ^ 行首
  • $ 行尾
  • w/W 下一个单词/长词的开始
  • e/E 下一个单词/长词的结尾
  • b/B 前一个单词/长词的开始
  • (/) 前一句/下一句的开始
  • {/} 前一段/下一段的开始

垂直方向


  • up .or. k 向上一行
  • down .or. j 向下一行
  • PGUP .or. ^B 向上一页
  • PGDN .or. ^F 向下一页
  • (NUMBER)G 转到第NUMBER行
  • /string 查找string
  • n/N 向后/前继续查找

打开保存和退出

打开


  • :o 打开
  • :e 打开
  • :enew 新建窗口打开
  • :sp 分割窗口打开

保存和关闭


  • :w 保存
  • :x 保存并退出
  • :q 退出
  • :q! 直接退出

窗口,Buffer

打开和关闭


  • :e 在buffer里打开
  • :bdelete [filename|buffer no] 关闭buffer
  • :sbuffer 分屏打开buffer
  • CTRL + w 在不同的屏见切换

浏览


  • :ls: .or. :buffers .or. :files 显示打开的buffer
  • :ls! .or. :buffers: .or. :files: 显示所有buffer,包括隐藏的
  • :bfirst .or. :brewind 转到第一个buffer
  • :bnext 转到下一个buffer
自定义alias

如果觉得操作不方便,你可以在.vimrc里自定义快捷键,比如:

nmap  <C-B> :bnext<CR>

这样CTRL + B就相当于:bnext加回车。

命令模式

这些命令可以修改文本,但是仍使你处于命令模式下。

  • x 删除当前光标下字符
  • J 将下一行加到当前行末尾
  • r(char) 用char替换当前光标下字符
  • dd 删除当前行
  • d(OFFSET) 从当前位置向后删除OFFSET个字符
  • u 撤销
  • o 重复上一条编辑命令

插入模式

任意这些命令会将你置于插入模式下, 你可以输入文本,敲击回车来开始新行,用上下左右来移动,用Del删除。 按ESC可以回到命令模式。

  • i/a 插入到当前位置前/后
  • I/A 插入到当前行的开始/末尾
  • o/O 另起下/上一行开始输入
  • cc 替换当前行
  • c(OFFSET) 替换到当前位置后的OFFSET位置

复合命令

vi开始体现出真正威力,所谓所想即所得

移动
  • 3⇒ 光标向右移动3个字符
  • 4) 光标向后移动4句
  • 2b 光标向左移2个单词
删除
  • d3w 删除后面三个单词
  • d} 删除本段光标后面部分
  • d) 删除本句光标后面部分
更改
  • c) 替换本句其余部分
  • c$ 替换本行后面部分

剪切、复制和粘贴

利用可视化模式

  1. v进入可视化模式
  2. 移动光标高亮需要重用的文本
  3. d剪切,按y复制
  4. 移动光标到目标位置
  5. P粘贴到光标之后
  6. p粘贴到光标之前

搜索

  • :s/reg/rep/ 用rep替换当前行内首个匹配reg的字符串
  • :s/reg/rep/g 用rep替换当前行内所有的匹配reg的字符串
  • :%s/reg/rep/g 全文本替换
  • :%s/reg/rep/gc 全文本替换前提是确认

缩进

  • «= 向左缩进
  • >⇒ 向右缩进

当然一般都用autoindent和各类源代码的缩进plugin来缩进

配置命令和参数

例举我的vimrc里的一些常用配置

" default encoding
let &termencoding = &encoding
set encoding=utf-8
 
" font
set guifont=youyuan:h12:cGB2312
 
" default color scheme
colorscheme torte
 
" Wrap too long lines
set nowrap
 
" wrap words at 70
" set textwidth=70
 
" Tabs are 4 characters
set tabstop=4
 
" (Auto)indent uses 4 characters
set shiftwidth=4
 
" spaces instead of tabs
set expandtab
 
" guess indentation
set autoindent
 
" Expand the command line using tab
set wildchar=<Tab>
 
" show line numbers
set number
 
" Fold using markers {{{ 
" like this
" }}}
set foldmethod=marker
 
" enable all features
set nocompatible
 
" powerful backspaces
set backspace=indent,eol,start
 
" highlight the searchterms
set hlsearch
 
" jump to the matches while typing
set incsearch
 
" ignore case while searching
set ignorecase
 
" history
set history=100
 
" 1000 undo levels
set undolevels=1000
 
" show a ruler
set ruler
 
" show partial commands
set showcmd
 
" show matching braces
set showmatch
 
" write before hiding a buffer
set autowrite
 
" shift = 4
set shiftwidth=4
 
" allows hidden buffers to stay unsaved, but we do not want this, so comment
" it out:
"set hidden
 
" auto-detect the filetype
filetype plugin indent on
 
" syntax highlight
syntax on
 
" abbrevations
ab #d #define
ab #i #include
ab #b /******************************
ab #e <space>******************************/
ab #l /*------------------------------*/
 
" we use a dark background, don't we?
set bg=dark
 
" Always show the menu, insert longest match
set completeopt=menuone,longest
 
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
autocmd BufReadPost *
  \ if line("'\"") > 0 && line("'\"") <= line("$") |
  \   exe "normal g`\"" |
  \ endif
 
"
" twitvim settings
" http://www.vim.org/scripts/script.php?script_id=2204
"
" let twitvim_login = "user:pass"
" switch between twitter and identica login
function! Switch_to_twitter()
    let g:twitvim_api_root = "http://twitter.com"
    let g:twitvim_login = "user:pass"
    FriendsTwitter
endfunction
 
function! Switch_to_identica()
    let g:twitvim_api_root = "http://identi.ca/api"
    let g:twitvim_login = "user:pass"
    FriendsTwitter
endfunction
 
command! ToTwitter :call Switch_to_twitter()
command! ToIdentica :call Switch_to_identica()
 
let twitvim_proxy = "127.0.0.1:8118"
let twitvim_count = 129
let twitvim_browser_cmd="E:\portable\GoogleChromePortable\GoogleChromePortable.exe"
nnoremap <F8> :FriendsTwitter<cr>
 
 
"
" twitvim plugins
"
"let twitvim_enable_python = 1
"let twitvim_enable_perl = 1
"let twitvim_enable_ruby = 1
"let twitvim_enable_tcl = 1
 
"
" vimim settings
" http://www.vim.org/scripts/script.php?script_id=2506
"
let g:vimim_one_key=1
let g:vimim_chinese_input_mode=1
 
wiki/vi_cheatsheet.txt · Last modified: 2010/04/23 03:21 by MeaCulpa     Back to top
Recent changes RSS feed Creative Commons License Powered by PHP Driven by DokuWiki