vi 是 unix 家族下最功能强大的文字编辑器,而 vim 則是 vi 的加强版,

编辑模式

  指令 說明
* i 在游標位置進入編輯模式
  I 在游標行的第一個非空白字元進入編輯模式
* a 在游標位置後進入編輯模式
* A 在游標行的最後一個字元進入編輯模式
* o 向下新增一行,並進入編輯模式
  O 向上新增一行,並進入編輯模式
  cc 刪除游標行,並進入編輯模式
* [ESC] 取消指令或退出編輯模式

游标移动

  指令 說明
* gg 移到第一行
* G 移到最後一行
* 行數 → G 移動到第 n 行
  0 移動到該行最前面
  $ 移動到該行最後面
  字數 → [Space] 向右移動 n 個字元
* 行數 → [Enter] 向下移動 n 行

标记与复制

  指令 說明
* v 開始字串標記
* V 開始行標記
* v → [Ctrl]-V 開始區塊標記
* d 刪除標記的內容
* y 複製標記的內容
* yy 複製游標行
  yG 複製游標行到最後一行
  y1G 複製游標行到第一行
  y$ 複製游標處到最後一個字元
  y0 複製游標處到第一個字元
* p 在下一行貼上複製或刪除的內容
  P 在上一行貼上複製或刪除的內容
* [Ctrl]-R → 0 在下一行貼上複製或刪除的內容,適用於編輯模式及指令行

搜尋與取代

  指令 說明
* /搜尋字串 向下搜尋字串
  /\c搜尋字串 向下搜尋字串,不分大小寫
* * 將游標移到字串上,直接按 "*" 也可以做向下搜尋
  ?搜尋字串 向上搜尋字串
  ?\c搜尋字串 向上搜尋字串,不分大小寫
* :set ic 搜尋時不分大小寫
* :set noic 搜尋時要分大小寫
* n 繼續下一個搜尋結果
* N 繼續上一個搜尋結果
* :起始行,終止行s/搜尋字串/取代字串/gic 從第 n 行到第 n 行取代字串 (後面的 g: 整行全部 i: 不分大小寫 c: 詢問)
* :1,$s/搜尋字串/取代字串/gic 全部取代字串 (後面的 g: 整行全部 i: 不分大小寫 c: 詢問)

刪除

  指令 說明
* dd 刪除游標行
* 行數 → dd 刪除 n 行
* dG 刪除游標行到最後一行
  d1G 刪除游標行到第一行
* d$ 刪除游標處到最後一個字元
  d0 刪除游標處到第一個字元

檔案功能

  指令 說明
* :w 存檔 (加 ! 表示強制存檔)
* :w 檔案名稱 另存新檔
* :q 退出 vi (加 ! 表示不存檔強制退出)
* :wq 存檔並退出 vi
* :x 存檔並退出 vi
  :w !sudo tee % 當你編輯好檔案要存檔時,卻發現沒有寫入檔案的權限! 用這會指令可以讓你直接以 root 的權限存檔
* :e 檔案名稱 編輯其它檔案
* :e! 還原至檔案編修前的狀態
  :r 檔案名稱 讀入檔案內容,並加到游標行的後面
* :n 切換到下一個開啟的檔案
* :N 切換到上一個開啟的檔案
* :set nu 顯示行號
* :set nonu 取消行號顯示
* :files 列出所有開啟的檔案
* :Ex 開啟檔案瀏覽器
* :Ex 路徑 於指定路徑開啟檔案瀏覽器
  :Hex 分割水平視窗後,再開啟檔案瀏覽器
  :Vex 分割垂直視窗後,再開啟檔案瀏覽器
  :Tex 新增頁籤後,再開啟檔案瀏覽器
  :Hex 路徑 分割水平視窗後,再於指定路徑開啟檔案瀏覽器
  :Vex 路徑 分割垂直視窗後,再於指定路徑開啟檔案瀏覽器
  :Tex 路徑 新增頁籤後,再於指定路徑開啟檔案瀏覽器

視窗分割

  指令 說明
* :new 新增水平分割視窗
* :new 檔案名稱 新增水平分割視窗,並在新增的視窗載入檔案
* :vnew 新增垂直分割視窗
* :vnew 檔案名稱 新增垂直分割視窗,並在新增的視窗載入檔案
  :sp 新增水平分割視窗,並在新增的視窗載入目前的檔案
  :sp 檔案名稱 新增水平分割視窗,並在新增的視窗載入檔案
  :vsp 新增垂直分割視窗,並在新增的視窗載入目前的檔案
  :vsp 檔案名稱 新增垂直分割視窗,並在新增的視窗載入檔案
* [Ctrl]-W → [方向鍵] 切換視窗
* :only 僅保留目前的視窗

頁籤

  指令 說明
* :tabe 新增頁籤
* :tabe 檔案名稱 新增頁籤,並在新頁籤載入檔案
  :tabc 關閉目前的頁籤,等同 :q
  :tabo 關閉所有頁籤
  :tabn 移至下一個頁籤
  :tabp 移至上一個頁籤
* gt 移至下一個頁籤
* gT 移至上一個頁籤
* :tabfirst 移至第一個頁籤
* :tablast 移至最後一個頁籤
* :tabm 頁籤編號 移至特定編號的頁籤 (編號從 0 開始)
  :tabs 列出所有頁籤

其它指令

  指令 說明
* J 將游標行與下一行合併
* u 還原指令
* [Ctrl]-R 重做指令
* [Ctrl]-N 自動補齊曾輸入過的單字
* . 重覆上一個指令
  ! 命令 執行 linux 指令,並顯示執行結果
  TOhtml 將目前編輯的檔案轉換成 HTML 原始碼 (會新增一個水平分割視窗)

檔案瀏覽器操作

請先以 :Ex 相關指令進入檔案瀏覽器

  指令 說明
* - 到上層目錄
* d 建立目錄
* D 刪除目錄
* R 重新命名
* s 切換排序方式
  r 切換升冪/降冪排序
  i 切換檔案的排列方式
* / 搜尋字串
  x 執行檔案
* o 新增水平視窗
* v 新增垂直視窗

vim 的設定檔

通常我會編輯 /etc/vimrc,在檔案最後加入:

" 顯示列號
set number
" 語法高亮度顯示
syntax on
" 標記搜尋到的字串
set hlsearch
" 自動縮排
set autoindent
" 顯示說明
set ruler
" 顯示編輯狀態
set showmode
" 設定註解的顏色
highlight Comment ctermfg=cyan
" 設定搜尋到的字串顏色
highlight Search term=reverse ctermbg= ctermfg=
" 設定 tab 鍵的字元數
set tabstop=

转自:访问

PHP面试系列 之Linux(三)---- Vi/Vim编辑器的更多相关文章

  1. 【转】Linux上vi(vim)编辑器使用教程

    Linux上vi(vim)编辑器使用教程 ------------------------------------------------------------ ikong ------------ ...

  2. Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令

    Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...

  3. Linux随笔 - vi/vim 编辑器显示行号

    显示行号 1. 打开vi 编辑器 2. 输入  :set number 3. 回车 关闭行号显示 1. 打开vi 编辑器 2. 输入  :set nonumber 3. 回车 行号在每次打开 vi/v ...

  4. Linux上vi(vim)编辑器使用教程

    vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是“visual interface”的缩 ...

  5. Linux之vi/vim编辑器

    1.概述 所有的Unix like系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在,但是目前我们使用比较多的是 vim 编辑器. vim具有程序编辑的能力,可以主动地以字体颜色辨别语法的 ...

  6. 新手指南:Linux上vi(vim)编辑器使用教程

    vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是“visual interface”的缩 ...

  7. Linux系统 vi/vim文本编辑器

    Linux系统 vi/vim文本编辑器 (一)Vim/Vi简介 (二)Vim/Vi工作模式 (三)Vim/Vi基本使用 (四)Vim/Vi应用技巧 (一)Vim/Vi简介 Vim/Vi是一个功能强大的 ...

  8. linux vi/vim 编辑器学习总结

    linux vi/vim 编辑器学习总结 很多时候我们开发人员不可避免的会涉及到项目部署,这个时候使用的就不是我们所熟知的 Windows 和 Mac OS 操作系统了,而是类 Unix 系统.项目部 ...

  9. 【Linux学习】Vi / Vim编辑器—编辑器工作模式、vi编辑操作

    Vi / Vim编辑器-编辑器工作模式.vi编辑操作 推荐一个很好的学习指南:http://www.oschina.net/translate/learn-vim-progressively 一.编辑 ...

  10. Windows & Linux 安装使用 Vim 编辑器 3分钟入门 - 精简归纳

    Windows & Linux 安装使用 Vim 编辑器 3分钟入门 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 25 转载请注明出处! 目录 Windows & Lin ...

随机推荐

  1. 集合框架以及Map(一)

    集合又称容器,编程思想中对其的定义为持有对象 我们在使用集合或者数组时得到最多的异常就是数组下表越界异常 Java.lang.ArrayIndexOutOfBoundsException这篇文章我们不 ...

  2. Core.Java.Volume.I.Fundamentals.10th.Edition 14.5.8 Volatile域 中文版 章节勘误

    今天重扫了corejava 14 并发的一章,在谈到volatile域代替synchronized 应用于并发更新时,看到如下内容,并发更新可用内部锁的方式但会带来阻塞问题,可用volatile域替代 ...

  3. MySQL数据导出为Excel, json,sql等格式

    MySQL数据经常要导出为Excel, json,sql等格式,通过步骤都很多,麻烦,现在通过Treesoft可以方便的导出你要的数据格式. 1.在线执行SQL,在数据列表中有相应按钮,方便的将数据导 ...

  4. Code Signal_练习题_arrayChange

    You are given an array of integers. On each move you are allowed to increase exactly one of its elem ...

  5. 13 Reasons Why You Should Pay Attention to Mobile Web Performance

    Mobile is no longer on the sidelines. If you’re not already thinking mobile first, you should at lea ...

  6. MultiThread(VS2013 MFC多线程-含源码-含个人逐步实现文档)

    原文:http://download.csdn.net/download/jobfind/9559162 MultiThread(VS2013 MFC多线程-含源码-含个人逐步实现文档).rar

  7. 131.007 Unsupervised Learning - Feature Selection | 非监督学习 - 特征选择

    1 Why? Reason1 Knowledge Discovery (about human beings limitaitons) Reason2 Cause of Dimensionality ...

  8. Json转Map

    http = new HttpClient**();//此处封装一下发请求的类 Map<String, String> map = new HashMap<String, Strin ...

  9. Java学习---基础知识学习

    2016-07-23  周六 利用键盘输入的时候需要抛出异常 ,直接快捷键 ctrl + 1 ;定义数组 int score[] = new int[4]  ;  只有4个数字BufferedRead ...

  10. CopyrightHelper—开源VS插件辅助插入版权注释

    前言 有很多时候,我们在写代码的时候需要在代码文件头加上描述和版权信息等,如果使用代码项目模板又得为每种文件定模板,而已不方便,如果从某个地方复制过来,又嫌麻烦... 为了能解决这种懒人的需求,我开始 ...