linux之Vim使用

   Vim同Emac是Linux世界下最为流行的两个文本编辑工具,集中精力学习一个就好了,暂定以Vim为学习对象。在本文中,一些基本的操作将不再介绍,只会介绍最为常用的命令以及设置,操作系统为Ubuntu 12.04.

        Vim的默认配置,是没有显示行号、语法高亮、智能缩进等功能,为了更好的开展工作,需要手动设置一个配置文件.vimrc,一般将其放在用户根目录下,作为用户自定义的配置文件使用。/etc/vim/vimrc为全局的配置文件,修改这个文件,将会改变所有用户的vim配置。

   既然是编辑,那中文输入法也是少不了的,点击链接来安装中文输入法。

  

相关的配置,可以参考 强大的vim配置文件,让编程更随意。

 

1. 常见的Vim命令

          1. 基本操作

    上下左右的移动: 上(K),下(J)

   

 

    /pat : 向前搜索pat

           ?pat : 向后搜索pat

    把光标移动到你要搜索的词(变量名、函数名等),比如,test,然后按*(向下完整匹配光标下的单词),Vim将自动产生一个对test的完整搜索单词。#为向上完整匹配光标下的单词。

     x :用于删除单个字符

     dd:删除一行

     删除惹人烦恼的^M:在不同环境中的文本编辑文件,对于换行符的解释不一样。Dos系统下,行结束符为\r\n ,Linux,行结束符为\n,Mac上为,行结束符\r.因为这个区别,在一个系统中编辑另一个系统中的文件时,就会出现烦人的^M。

     u: 撤销上一步的操作

     :(n,m)s/ a / b ( /g ) 用b来替换a,在n~m行之间。$s表示最后一行

    0:移到一行的开头

    $:移到一行的结尾

    gf快捷键来进入任意一个被include <header.h>的头文件,使用ctrl+O回到使用gf之前的地方。

  

         

     在Linux上面打开Window上的文件,可以使用dos2unix命令来转换文件。

     

使用Vim进行调试和编译

    利用Vim的quickfix模式,可以在Vim中启动编译,如果编译出错的话,Vim会根据编译器输出的错误信息,自动跳到第一个出错的地方,修改完毕后,使用快捷键,可以跳到下一个错误的地方,再进行修改。

   Quickfix模式的原理是,从编译器的编译输出信息中获得有关错误的相关信息,将其保存在一个位置列表中,然后提供一系列命令,实现在这些位置列表中跳转。

 为了使用quickfix,你首先定义编译你程序的指令makeprg,

:set makeprg=gcc\ -Wall\ -ohello\ hello.c 

 然后执行:make就可以编译了。

  在使用:make时,vim会自动调用makeprg选项定义的命令进行编译,并把编译信息重定向到一个临时文件,当编译出现错误时,vim会从临时文件中读出错误信息,据此形成quickfix列表,并跳转到第一个错误出现的地方。

在quickfix模式里经常用到的命令有:

:cc                显示详细错误信息 ( :help :cc )
:cp                跳到上一个错误 ( :help :cp )
:cn                跳到下一个错误 ( :help :cn )
:cl                列出所有错误 ( :help :cl )
:cw                如果有错误列表,则打开quickfix窗口 ( :help :cw )
:col               到前一个旧的错误列表 ( :help :col )
:cnew              到后一个较新的错误列表 ( :help :cnew )

 详细参考点此。

  

 

 

 

问题描述:

   在Vi里面,下意识的按了Ctrl+S来保存,结果界面卡死,无法输入。

问题原因:

  在Vi中,Ctrl+S用来暂停向终端发送数据的,既然是暂停发送数据,那么屏幕就自然接收不到其他数据了,这种情况下,可以使用Ctrl+q来恢复。

 

 

 

问题描述:

当使用笔记本键盘时,用vi处于编辑模式,在按上下左右时,出现ABCD并且加换行。

问题原因:

vim是vi的升级版程序,关于键盘映射上面,老Vi对于小键盘的上下左右会解释成ABCD,新版Vim为了兼容旧版Vi写的脚本,添加了vim的兼容模式,但是,现在已经没有必要使用vi兼容模式了。

解决方法:

在vi中设置:set nocp 恢复为不兼容旧版Vi的模式,或者往用户目录下的.vimrc中添加此命令set nocp就可以解决此类问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Holedox Moving

2012-08-11 我的第一个A*算法&#xff1a; 四处看A*算法。。还是有一点没有弄明白就是那个当已经在列表中的时候再次进入的时候怎么去更新。 这道题。。有点难开始的时候不会位压缩&#xff0c;去看了一个别人的代码。所以感谢一下。这位高手。写了一个bfs(),500多ms。 看了A*…

mint mvc文件上传功能——使用篇

为什么80%的码农都做不了架构师&#xff1f;>>> 为了不打击大家的积极性&#xff0c;暂时只着重讲用法&#xff0c;原理方面暂时不讲太多。 配置web.xml 文件上传需要用到servlet3的异步处理功能。需要在web.xml配置文件中加入异步支持声明&#xff08;注释处&am…

React 项目开发问题积累

React 开发问题积累1. 修改antd的组件样式2. antd级联选择框&#xff08;后台数据渲染&#xff09;1. 修改antd的组件样式 问题&#xff1a;直接修改样式好像不起作用&#xff0c;直接在组件上加style行内样式也不生效 方案&#xff1a;用 :global样式穿透 全局样式直接使用 …

关于spring中util:/的配置

解决redis设置缓存时间找到的帖子&#xff0c;我这个初学者需要学习的还是很多的。 原文地址&#xff1a;http://www.doc100.net/bugs/t/216322/index.html 探索<util/>命名空间 事情的发展总是一段曲折前进的过程。当Spring刚出现时&#xff0c;开发者可以使用<…

静态类

静态类必须直接从System.Object派生&#xff0c;从其他任何基类派生没有任何意义。无法创建静态类的实例静态类不能实现任何接口&#xff0c;这是因为只有使用类的一个实例时&#xff0c;才可以调用类的接口方法静态类只能定义静态成员&#xff08;字段、方法、属性和事件&…

ASP.NET 数据库缓存依赖

By Peter A. Bromberg, Ph.D. 在ASP.NET中&#xff0c;Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为。以文件为基础的依赖是最有用的&#xff0c;文件依赖项是通过使用 Cache.Insert 并提供引用文件的 CacheDependency 对象添加的 Cache.Insert("MyData&qu…

React Router路由详解

React Router路由详解一、基础1、安装使用2、React Router 中通用的组件路由组件 BrowserRouter 和 HashRouter路径匹配组件: Route 和 Switch导航组件: Link 和 NavLinkRedirect 重定向withRouter编程式导航 - history 对象路由过渡动画打包部署的路由配置3、路由配置实例一、…

TLS 1.2详解

TSL由多个协议组成的两层协议集合&#xff0c;工作与应用层和传输层之间。 TLS协议包含两层协议&#xff1a;记录层协议&#xff08;TLS Record Protocol协议&#xff09;和 握手协议&#xff08;TLS Handshake Protocol协议&#xff09;&#xff0c;底层采用可靠传输协议&…

个人作业2——英语学习APP案例分析

第一部分 调研&#xff0c; 评测 1.下载并使用&#xff0c;描述最简单直观的个人第一次上手体验&#xff1a; 没有各种广告&#xff0c;界面简洁&#xff0c;软件安装包略小于其他翻译软件。就内存的占用而言优于同款热门软件有道词典。 2.必应词典&#xff08;Android客户端&a…

IOS开发UI篇之──自定义加载等待框(MBProgressHUD)

这里介绍一下网友开源的MBProgressHUD类&#xff0c;实现等待框&#xff0c; 一、网上下载 MBProgessHUD 类文件&#xff0c;直接导入到工程即可 二、示例分析 在我的工程中示例如下&#xff1a; 1&#xff09;在ShowImageViewController.h头文件代码如下&#xff1a; #import…

WindowProc和DefWindowProc的区别

1. WindowProc是你给自己的窗口定义的窗口处理函数 DefWindowProc是windows平台提供的默认窗口处理函数 如果某些消息你不需要做特别的处理&#xff0c;调用DefWindowProc进行处理就可以了&#xff0c;不需要你自己再去些那些windows的"标准动作"2. 根据1&#xff0c…

唯一约束(UNIQUE_KEY)

唯一约束可以保证记录的唯一性 唯一约束的字段可以为空值&#xff08;NULL&#xff09; 每张数据表可以存在多个唯一约束&#xff08;主键只有一个&#xff09; mysql> CREATE TABLE tb7( -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(2…

HDOJ---2236 无题II[二分枚举+匈牙利]

无题II Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 571 Accepted Submission(s): 296 Problem Description这是一个简单的游戏&#xff0c;在一个n*n的矩阵中&#xff0c;找n个数使得这n个数都在不同的行和…

Oracle 11gR2 RAC恢复OCR和VOTE DISK

Oracle 11gR2 RAC恢复OCR和VOTE DISK原文链接&#xff1a;http://www.askmaclean.com/archives/11-2-lost-ocr-votedisk-group-recovery.html之前有同学在我的Oracle Allstarts群里讨论关于丢失包含ocr和votedisk的ASM diskgroup导致11gR2 RAC cluster无法正常启动的问题&#…

vue3开发实践笔记

一、setup 生命周期 1、执行时机&#xff1a;会在beforeCreate之前执行&#xff0c;内部无法访问this 2、setup 包含的生命周期 onBeforeMount——挂载开始前调用 onMount——挂载后调用 onBeforeUpdate——当响应数据改变&#xff0c;且重新渲染前调用 onUpdated——重新渲…

GetLastError()函数返回值及含义

GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置。函数并无必要设置上一次错误信息&#xff0c;所以即使一次GetLastError调用返回的是零值&#xff0c;也不能担保函数已成功执行。只有在函数调用返回一个错误结果时&#xff0c;这个函数指出的错误结…

LINQ系列:Linq to Object排序操作符

LINQ排序操作符包括&#xff1a;OrderBy、OrderByDescending、ThenBy、ThenByDescending及Reverse。 1. OrderBy 1>. 原型定义 public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func&l…

第5章 为手机而设计

5&#xff0e;为手机而设计 至此,你已经了解了手机&#xff0c;通过一个简单的应用程序的演练了工作方式并且学习XAML的基础知识。现在你应该开始考虑你要编写的应用程序的性质。虽然很容易想到的是手机只是Silverlight存在于另一个屏幕上而已&#xff0c;但是事实没有这么简单…

vue3.x全局toast、message、loading组件

vue3.x全局toast、message、loading组件Toast组件loadingToast组件 在 src/components下创建toast文件夹&#xff0c;并依此创建index.vue和index.js 1、index.vue 一般toast会有如下功能&#xff1a;背景色、字体颜色、文本、停留时间 <template> <div class"…

知天命

吾乃浑浑噩噩、后知后觉之人。 今欲窥天命之道。天命&#xff0c;何也&#xff1f; 天之命乎&#xff0c;或人之道乎&#xff1f; 人生于此世。 盲从于世上&#xff0c;依其欲而行&#xff0c;乃天之命也。 人可存之世上仅百载&#xff0c;终白土亦。 随意欲而为&#xff0c;应…