热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vim操作

文本编辑器有很多,图形模式下有gedit、kwrite等编辑器,文本模式下的编辑器有vi、vim(vi的增强版本)和nano。vi和vim是Linux系统中最常用的编辑器。有人曾这

文本编辑器有很多,图形模式下有gedit、kwrite等编辑器,文本模式下的编辑器有vi、vim(vi的增强版本)和nano。vi和vim是Linux系统中最常用的编辑器。有人曾这样的说过在世界上有三种人:一种是使用Vi的,另一种是使用是Emacs的,剩下的是第三种人。

,

  (一)初级个性化配置你的vim

  1、vim是什么?

  vim是Vi IMproved,是编辑器Vi的一个加强版,一个极其强大并符合IT工程师(程序员、运维)习惯的编辑器。如果你是一名职业的SE,那么一定在寻找一款出色的能够自由定制、满足灵活编辑功能的编辑器。那么答案,就是vim或者Emacs。

  2、配置文件在哪?

  Windows系统的配置文件是vim安装目录下的vimrc文件。

  Linux系统,RHEL和CentOS的配置文件是/etc/vimrc,Debian和Ubuntu的配置文件是/usr/share/vim/vimrc。

  Mac OS X的配置文件是/usr/share/vim/vimrc。

  3、vimRC中的RC是什么意思?

  为什么把这么个没有意义的问题也列出来?原因很简单,就是我在接触vim之初第二个想问的问题就是这个(第一个就是上面的“1”)。一般在运行某个软件、环境或工具之初,要初始执行的一些命令,称为Run Commands,即RC。根据Wikipedia.org的记载,RC缩写的用法源自MIT的相容分时操作系统(Compatible Time-Sharing System,CTSS)[参考1]。所以以后如果你看到了SystemRC或者ScreenRC,也就知其缘由了。

  4、三种基本模式

  在《大家来学vim》中提到vim有6+5种模式,但除了细分程度不同外,实际上常用的只有3种模式:Normal Mode、Insert Mode和Command-line Mode。

  从Normal Mode进入Insert Mode,可以按i、I、a、A、o、O、r、R即可。其中i和I表示插入(Insert),r和R表示替换(replace)。

  从Insert Mode进入Normal Mode,只需要按ESC键即可。

  从Normal Mode进入Command-line Mode,可以按“:”、“/”、“?”。其中“:”表示输入vim命令,“/”表示后面输入要向下搜索的字符串,“?”表示后面输入要向上搜索字符串。

  从Command-line Mode进入Normal Mode,只需要按ESC键即可了。

  你可以把Normal Mode理解为常态,进入其他任何一种模式,需要某种特殊方式,而从其他特殊模式回到Normal Mode,就按ESC键即可。

  5、vim中那些最最常用的配置

  当你尝试去google一些其他人的vimrc配置时,你一定会找到一篇叫做《The ultimate vim configuration》的文章,不过它的作者,Amix后来在他的博客上提到[参考2],这份在google搜索vimrc会排在前十的vim配置文件,如今已经过时了,所以他提供了一些更新信息。

  (1)颜色设置

  syntax on       “开启代码高亮

  syntax off      “关闭代码高亮

  syntax enable   “开启代码高亮

  (2)搜索设置

  set hlsearch    “开启搜索高亮

  set nohlsearch  “关闭搜索高亮

  set incsearch   “输入搜索字符串的同时进行搜索

  set ignorecase  “搜索时忽略大小写

  (3)用户界面

  set showmode        “开启模式显示

  set ruler           “开启光标位置提示

  set number      “显示行号

  set nonu            “不显示行号

  set cursorline      “强调光标所在行

  set cmdheight=1 “命令部分高度为1

  (4)编辑辅助配置

  set autoindent      “自动缩进

  set noautoindent    “不自动缩进

  set smartindent     “智能缩进

  set autoread        “当文件在外部被改变时,vim自动更新载入

  set showmatch       “显示匹配的括号

  参考:

  [1]Run Commands,http://en.wikipedia.org/wiki/Run_commands

  [2]The Ultimate vim Configuration(vimRC),http://amix.dk/blog/post/19486

  (二)常用的状态切换按键

  1、Normal Mode -> Insert Mode

  i 小写字母i,在光标位置插入

  a 小写字母a,在光标的下一个位置插入

  I 大写字母I,在光标所在行的第一个非空格处插入

  A 大写字母A,在光标所在行的最后一个字符处插入

  o 小写字母o,在光标所在行的下一行处插入新行

  O 大写字母O,在光标所在行的上一行处插入新航

  r 小写字母r,替换光标所在处的字符一次

  R 大写字母R,持续替换光标所在处的字符,直到按下ESC

  2、Normal Mode -> Command-line Mode

  :w 保存文件

  :w! 强制保存文件(前提是用户有修改文件访问权限的权限)

  :q 退出缓冲区

  :q! 强制退出缓冲区而不保存

  :wq 保存文件并退出缓冲区

  :ZZ  保存文件并且退出

  :wq! 强制保存文件并退出缓冲区(前提是用户有修改文件访问权限的权限)

  :w 另存为名为filename文件

  :n1,n2 w 将n1行到n2行的数据另存为名为filename文件

  : x 如果文件有更改,则保存后退出。否则直接退出。

  3、Insert Mode -> Normal Mode

  按下ESC键

  4、Command-line -> Normal Mode

  按下ESC键

  (三)常用光标移动按键

  1、光标字符操作

  j 向下

  k 向上

  h 向左

  l 向右

  $ 光标移动到行尾(End),注意要按Shift键

  0 光标移动到行首(Home)

  ^ 光标移动到行首第一个非空白字符(Home),注意要按Shift键

  2、光标词操作

  w 光标移动到后一词的词首

  W 光标移动到后一词的词首且忽略标点符号

  e 光标移动到后一词的词尾

  E 光标移动到后一词的词尾且忽略标点符号

  b 光标移动到前一词的词首

  B 光标移动到前一词的词首且忽略标点符号

  3、光标句操作

  ) 光标移动到后一句的句首

  ( 光标移动到前一句的句首

  % 配合“(”和“)”使用,寻找相匹配的另一半

  4、光标行操作

  G 光标移动到文档的最后一行的第一个非空白字符

  nG 光标移动到文档的第n行,相当于”:n”

  gg 光标移动到文档的第1行的第一个非空白字符,相当于”1G”,也相当于”:1″

   光标向下移动N行

  5、光标段操作

  } 光标移动到下一段的段首

  { 光标移动到上一段的段首

  % 配合“(”和“)”使用,寻找相匹配的另一半

  6、光标页操作

  Ctrl+f 向下翻页(Pagedown)

  Ctrl+b 向上翻页(Pageup)

  Ctrl+d 向下翻半页

  Ctrl+u 向上翻半页

  H 光标移动到目前显示页的第一行

  M 光标移动到目前显示页的中间行

  L 光标移动到目前显示页的最后一行

  7、光标自由操作

  Ctrl+o 回到光标的上一位置

  (四)常用编辑操作按键

  1、删除操作(delete)

  dd 删除光标所在行

  ndd 删除从光标所在行开始,向下的n行

  d1G 删除从光标所在行开始,到第一行的所有行

  dG 删除从光标所在行开始,到最后一行的所有行

  d$ 删除从光标所在位置,到行尾的所有字符

  d0 删除从光标所在位置,到行首的所有字符

  2、复制操作(yank)

  yy 复制光标所在行

  nyy 复制从光标所在行开始,向下的n行

  y1G 复制从光标所在行开始,到第一行的所有行

  yG 复制从光标所在行开始,到最后一行的所有行

  y$ 复制从光标所在位置,到行尾的所有字符

  y0 复制从光标所在位置,到行首的所有字符

  3、粘贴操作(paste)

  p 小写字母p,粘贴剪贴板中的数据,从光标所在行的下一行开始

  P 大写字母P,粘贴剪贴板中的数据,从光标所在行的上一行开始

  4、撤销与重做操作(undo,redo)

  u (Undo)撤销上一个操作

  Ctrl+r (Redo)重做上一个操作

  5、重复操作

  . 重复上一操作

  6、替换操作(replace)

  r 替换光标所在处字符

  R 进入替换模式,直至按ESC退出

  cc 替换光标所在行

  cw 替换光标所在的英文单词

  ~ 转换大小写

  7、排版操作

  :le 光标所在行左对齐

  :ri 光标所在行右对齐

  :ce 光标所在行居中

  (五)常用多缓冲区操作按键

  1、多文件编辑模式

  (1)argument list模式,就是在打开vim编辑器时,携带多个文件路径参数。

  (2)buffer list模式,就是在进入vim编辑器后,打开多个缓冲区进行编辑。

  2、单一缓冲区打开多个文件

  :files 显示目前打开了哪些文件

  :n 切换到下一个缓冲区内容

  :N 切换到上一个缓冲区内容

  :2n 切换到下下个缓冲区内容

  :bn 下一个缓冲区内容(buffer next)

  :bp 上一个缓冲区内容(buffer previous)

  3、多个缓冲区打开多个文件

  :sp [filename] 打开一个新的缓冲区,如果有filename则内容为该文件,否则为当前文件

  Ctrl+w n 新建一个缓冲区

  Ctrl+w q 退出光标所在的缓冲区

  Ctrl+w j 光标移动到下一缓冲区

  Ctrl+w k 光标移动到上一缓冲区

  Ctrl+w l 光标移动到右一缓冲区

  Ctrl+w h 光标移动到左一缓冲区

  Ctrl+w v 左右切割窗口新建缓冲区

  Ctrl+w s 上下切割窗口新建缓冲区

  Ctrl+w o 使光标所在缓冲区最大化,其他缓冲区隐藏

  (六)常用搜索与书签操作快捷键

  1. 搜索字符串

  /string 向下搜索字符串“string”

  ?string 向上搜索字符串“string”

  2. 重复上次搜索

  n 根据上次搜索条件找到下一个匹配的字符串

  N 根据上次搜索条件找到上一个匹配的字符串

  3. 搜索单词

  * 向下搜索光标所在处的单词(完全匹配)

  # 向上搜索光标所在处的单词(完全匹配)

  g* 向下搜索光标所在处的单词(部分匹配)

  g# 向上搜索光标所在处的单词(部分匹配)

  4. 标记书签(mark)

  ma a为小写字母,为光标所在处设定文档书签a

  mA A为大写字母,为光标所在处设定全局书签A

  5. 使用书签(mark)

  `a 到文档书签a处,Tab键上方

  ‘a 到文档书签a所在行行首处,Enter键左边

  `A 到全局书签A处,Tab键上方

  ‘A 到全局书签A所在行行首处,Enter键左边

  `n 如果n=0,缓冲区将打开上一次的文档,且光标在上次编辑最后的位置,1-9以此类推

  ‘n 如果n=0,缓冲区将打开上一次的文档,且光标在上次编辑最后的位置所在行的行首,1-9以此类推

  6. 查看书签列表

  :marks 查看当前所有书签

  (七)关于加密

  1、加密你的文本文件

  当你用vim打开或新建一个文件时,如果加上-x参数,即:

  vim -x filename

  那么vim会提示你:

  Enter entryption key:

  当你输入了密码后,vim会提示你重复输入以确认:

  Enter same key again:

  你在设置密码的时候,是以*来显示的,非明文。当下次有人(包括你自己)打开该文件的时候,vim就会提示:

  Need encryption key for “main.cpp”

  Enter encryption key:

  这时你只要输入你之前所设置的密码就可以了。如果你输入的密码是错误的,vim并不会提示你密码错误,而是显示一堆无意义的垃圾代码。

  2、解除加密与重设密码

  打开你已经加密的文件,然后输入:

  :set key=

  这样,你的密码就被设置为空了,今后进入就不再需要输入密码了。而如果你向重设密码的话,你可以输入:

  :X

  注意是个大写字母X。这时vim会提示你,只要反复输入两次新的密码就可以了:

  Enter entryption key: *****

  Enter sanme key again: *****

  3、加密引起的问题

  vim的加密功能,可以说是问题一大堆。比如:

  (1)如果密码输入错误,vim不会拒绝访问者编辑文件。在这种显示乱码的情况下编辑文件并保存,整个文件就会变得混乱不堪,无法辨识。今后即使使用正确的密码打开文件,也看不到正确的文档了。

  (2)如果对一个需要编译的源代码文件进行了加密,则无法通过编译器的语法检查。

  (3)交换文件是无法加密的。这样引起什么问题?问题就是如果其他用户想办法读取到了你的交换文件,就可以绕过解密环节,你的加密也就无意义了。解决的办法就是,不使用交换文件。方法有三个,一是修改你的vimrc文件(vim配置文件):

  set noswapfile

  二是在用vim打开文件之初就输入命令:

  vim -x -n filename

  (注意-x是加密参数,与我们所说的swap没有关系,不要搞混)

  三是在进入vim编辑该文件后,输入:

  :setlocal noswapfile

  不过不使用交换文件的坏处就是,你可能会面临数据丢失而无法找回的悲剧。所以又想用加密,又想不丢失文件的朋友们,就勤按“:w”吧。

,

vim 操作


推荐阅读
  • Git基础操作指南:掌握必备技能
    掌握 Git 基础操作是每个开发者必备的技能。本文详细介绍了 Git 的基本命令和使用方法,包括初始化仓库、配置用户信息、添加文件、提交更改以及查看版本历史等关键步骤。通过这些操作,读者可以快速上手并高效管理代码版本。例如,使用 `git config --global user.name` 和 `git config --global user.email` 来设置全局用户名和邮箱,确保每次提交时都能正确标识提交者信息。 ... [详细]
  • 大数据应用实例:电视收视率分析企业项目实操第二篇
    本文继续探讨大数据在电视收视率分析中的应用,详细介绍了如何在CentOS系统中进行防火墙管理。针对CentOS 6.5及更早版本,提供了具体的命令操作步骤,包括停止防火墙服务和禁用防火墙启动。此外,还深入讨论了这些操作对数据传输和系统安全的影响,为实际项目实施提供了宝贵的技术参考。 ... [详细]
  • 在执行 Vim/VM 命令时遇到错误提示:检测到名为
    在使用 Docker 时,通过 Vim 编辑 Dockerfile 文件时遇到了错误提示:“检测到名为 .dockerfile.swp 的交换文件”。这一问题通常是因为上次编辑该文件时意外中断,导致系统生成了临时的交换文件。为了解决这个问题,可以手动删除该交换文件或使用 Vim 的恢复功能来恢复未保存的更改。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 在椭圆形状设计中,色彩搭配方案对视觉效果和用户体验至关重要。本文分析了不同色彩组合在椭圆形状设计中的应用效果,特别探讨了白色背景与绿色文字的搭配,指出长期观看这种配色可能会导致视觉疲劳。通过引入多种色彩搭配方案,本文旨在为设计师提供更加科学和舒适的色彩选择建议。 ... [详细]
  • 本研究提出了一种方法,用于判断两个数组中的元素是否相同,而不考虑其顺序。该方法通过检查数组中每个元素的出现次数来实现。具体实现如下:首先验证输入参数是否为数组,然后对两个数组进行排序并逐个比较元素。若所有元素均相等,则返回 `true`,否则返回 `false`。此方法适用于需要忽略顺序的数组比较场景。 ... [详细]
  • Spring Security 认证模块的项目构建与初始化
    本文详细介绍了如何构建和初始化Spring Security认证模块的项目。首先,通过创建一个分布式Maven聚合工程,该工程包含四个模块,分别为core、browser(用于演示)、app等,以构成完整的SeehopeSecurity项目。在项目构建过程中,还涉及日志生成机制,确保能够输出关键信息,便于调试和监控。 ... [详细]
  • 如何在IDEA中安装和配置反编译插件以提高代码审查效率
    在 IntelliJ IDEA 中提升代码审查效率的一种方法是安装和配置反编译插件。首先,进入 IDEA 的设置界面,然后导航到插件管理部分。接下来,搜索 "ideaJad" 插件并进行安装。安装完成后,重启 IDEA 以确保插件生效。这将帮助你在审查二进制文件时更加高效地查看源代码。 ... [详细]
  • 优化后的标题:数据网格视图(DataGridView)在应用程序中的高效应用与优化策略
    在应用程序中,数据网格视图(DataGridView)的高效应用与优化策略至关重要。本文探讨了多种优化方法,包括但不限于:1)通过合理的数据绑定提升性能;2)利用虚拟模式处理大量数据,减少内存占用;3)在格式化单元格内容时,推荐使用CellParsing事件,以确保数据的准确性和一致性。此外,还介绍了如何通过自定义列类型和优化渲染过程,进一步提升用户体验和系统响应速度。 ... [详细]
  • 深入解析 OpenCV 2 中 Mat 对象的类型、深度与步长属性
    在OpenCV 2中,`Mat`类作为核心组件,对于图像处理至关重要。本文将深入探讨`Mat`对象的类型、深度与步长属性,这些属性是理解和优化图像操作的基础。通过具体示例,我们将展示如何利用这些属性实现高效的图像缩小功能。此外,还将讨论这些属性在实际应用中的重要性和常见误区,帮助读者更好地掌握`Mat`类的使用方法。 ... [详细]
  • 通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ... [详细]
  • 在ASP.NET MVC项目中,通过实战解决了Ajax请求500错误及多表数据查询的问题。具体而言,将页面分为两个部分,用户点击右侧导航栏时,通过Ajax请求动态加载数据,并在右侧显示相应的页面内容。最初尝试使用Partial Action方法,但遇到了500错误。通过详细排查和调试,最终成功解决了这一问题,并实现了预期功能。此外,还优化了多表数据查询的性能,确保系统的高效运行。 ... [详细]
  • 通过自定义 `TextView`,实现了在用户点击或焦点变化时动态调整字体颜色的效果。该方法利用了 `ColorStateList` 和 `Selector` 资源文件,确保了界面交互的流畅性和视觉效果的提升。具体实现中,通过重写 `onTouchEvent` 和 `onFocusChanged` 方法,精确控制了颜色变化的时机和状态。此外,还对性能进行了优化,确保在高频率操作下依然保持高效响应。 ... [详细]
  • 尽管许多人认为跑步是一项简单的运动,但实际上它涉及诸多专业知识。不正确的跑步方式不仅会降低锻炼效果,还可能引发伤害。例如,穿着不合脚或过于陈旧的跑鞋,会导致足部支撑不足,增加受伤风险。此外,跑步姿势不当、热身不足、过度训练等问题也同样值得关注。本文将详细介绍七大常见跑步误区,并提供专业的改进建议,帮助跑者避免这些问题,提高运动效率和安全性。 ... [详细]
  • 在第六章中,我们将深入探讨MySQL中的多表查询技术,包括联结查询和子查询。联结查询通过将两个或多个表进行连接,基于连接条件生成结果集。常见的联结类型有内联结、外联结和全外联结。交叉联结(CROSS JOIN)虽然使用较少,但其原理是生成所有可能的组合,类似于笛卡尔积的概念。此外,子查询则是在一个查询语句中嵌套另一个查询,用于获取更复杂的数据集。本章将通过实例详细讲解这些查询方法的应用和优化技巧。 ... [详细]
author-avatar
LY萍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有