vim中的操作

一、设置大小字符匹配不匹配
    set ignorecase / set ic
    set noignorecase /set noic
二、设置查找时高亮显示与不显示
    set hlsearch  /set hls
    set nohlsearch /set nohls
三、设置在查找过程中就显示匹配点 与 在查找过程中不显示匹配点
    set incsearch / set is
    set noincsearch / set nois
四、设置查找到结尾或开头后停止  与 查找到结尾后折回到文件开头重新查找
   set wrapscan / set ws
   set nowrapscan /set nows
五、设置显示行号
   set number / set nu
   set nonumber /set nonu
六、设置Tab键宽度
   set ts =4

vim中的移动命令

http://vcd.gro.clinux.org/doc/usr_03.html#usr_03.txt
一、向前移动一个词
    w  3w  b  2b (向前移动一个词 / 向前移动三个词 / 前后移动一个词 / 向后移动二个词)
    e (移动到一个个单词词末)  ge(移动到前一个单词末尾)
    移动词的命令包括:w / W / e / E / b / B / ge / gE
二、移动到行首或行尾
    "$" 命令把光标移动到当前行行尾。"^" 命令把光标移动到一行的第一个非空字符,而 "0" 命令则移到一行的第一个字符,
三、移动到一个指定的字符
   单字符查找命令是最有用的移动命令之一。"fx" 命令向前查找本行中的字符 x。
   可以在这个命令前面加计数前缀,所以,可以用 "3fl"
 "F" 命令用于向左查找:
 "tx" 命令与 "fx" 相似,但它只把光标移动到目标字符的前一个字符上。
四.移动到指定行:
   "33G" 把你送到 33 行
 "G" 命令把光标移动到文件末。移动到文件首的命令是 "gg"。
 "50%" 移动到文件的中间,而 "90%" 移到差不多结尾的位置。
    "H" 表示 "Home" (头)移动到屏幕上方,"M" 表示 "Middle" (中)移动到屏幕中间 而 "L" 表示 "Last" (尾)移动到屏幕下方。
五、滚屏
  CTRL-U 命令向下滚动半屏  CTRL-D 命令把视窗向下移动半屏
 每次滚一行的命令是 CTRL-E (上滚) 和 CTRL-Y (下滚)。

设置vim的选项
   如果每次用 Vim 都要设置一些选项,如是否大小写匹配,显示行号.那么,你可以把这些命令写到Vim 的启动文件中。
  用:scriptnames来查找vim启动文件在什么地方.
  然后:edit ~/.vimrc
  在这个文件中就可以设置一些选项了.

vim中使用标记

一、当你用 "G" 命令跳到另一个地方,Vim 会记住你从什么地方跳过去的。这个位置成为一个标记,要回到原来的地方,使用如下命令:``
 `` 命令可以在两个位置上跳来跳去。而 CTRL-O 命令则跳到一个 "较老" 的地方 (提示: O 表示 older)。CTRL-I 则跳到一个 "较新" 的地方
 :jumps 命令能输出一个你可以跳往的位置的列表。最后一个你使用的标记会用 ">" 符号标记出来。
二、Vim 允许你在文本中放置自定义的标记。命令 "ma" 用 a 标记当前的光标位置。你可以在文本中使用 26 个标记 (a 到 z)。这些标记是不可见的,只是一个由 Vim 记住的位置。
    要跳到一个你定义的标记,可以使用命令 `{mark},这里 {mark} 是指定义标记的那个字母。所以,移到标记 a 的命令是: `a
三、你可以用如下命令取得所有的标记的列表::marks
到有一些特殊的标记,包括:
        '       跳转前的光标位置
        "       最后编辑的光标位置
        [       最后修改的开始位置
        ]       最后修改的结束位置

vim中的操作符与动作

一、 操作符-动作模式
"dw" 命令删除一个单词。你可能认出来了,"w" 是词移动命令。实际上,"d" 命令后面可以跟任何 "动作" (motion) 命令,它会删除从当前位置到光标移动到的目标位置的全部内容。
 以上定义了一个命令组合模式:操作符-动作。你首先输入一个操作符命令,例如,"d"就是一个删除操作符。然后你输入一个动作命令,例如 "4l" 或者 "w"。这种方法使你可以在任何你能越过的文本上执行各种操作。
 另一个操作符命令是 "c",表示修改,change。它的作用方式与 "d" 操作符相似,只是完成后会切换到插入模式。例如,"cw" 修改一个词,更精确的说,它删除一个词,并切换到插入模式。
        To err is human
           ------->
             c2wbe<Esc>
        To be human
这里 "c2wbe<Esc>" 包括如下操作:
        c       修改操作符
        2w      移动两个单词的距离 (与操作符合起来,它删除两个单词并进入插入模式)
        be      插入 be 这个单词
二、更 多 的 修 改 命 令
像 "dd" 可以删除一行一样,"cc" 修改一整行。但它会保留这一行的缩进 (前导空格)。
"d$" 删除到行尾;"c$" 则修改到行尾。

命令 "3dw" 和 "d3w" 都是删除 3 个单词。如果你非要寻根问底,那么:"3dw" 表示删除一个单词 3 次,而 "d3w" 表示删除三个单词一次。这是一个没有分别的分别。实际上你可以放两个计数前缀,例如,"3d2w" 删除两个单词三次,共计六个单词。
三、重复一个修改
"." 是 Vim 中一个非常简单而有用的命令。它重复最后一次的修改操作。例如,假设你在编辑一个 HTML 文件,你想删除所有的 <B> 标记。你把光标移到第一个 "<" 上,然后用 "df>" 命令删除 <B>。然后你就可以移到 </B> 的 < 上面用 "." 命令删除它。"."
命令执行最后一次的修改命令 (在本例中,就是 "df>")。要删除下一个 <B> 标记,移动到下一个 < 的位置,再执行 "." 命令即可。
                              To <B>generate</B> a table of <B>contents
        f<   找第一个 <       --->
        df>  删除到 >            -->
        f<   找下一个 <            --------->
        .    重复 df>                       --->
        f<   找下一个 <                        ------------->
        .    重复 df >                                      -->

"." 命令重复任何除 "u" (撤销),CTRL-R (重做) 和冒号命令外的修改。
再举一个例子:你想把 "four" 修改成 "five"。有好几个地方都要作这种修改。你可以
用如下命令快速完成这个操作:

/four<Enter>    找到第一个 "four"
        cwfive<Esc>     修改成 "five"
        n               找下一个 "four"
        .               重复修改操作
        n               找下一个 "four"
        .               重复修改
                        如此类推......
四、可视模式
 要删除一些简单的东西,用 "操作符-动作" 命令可以完成得很好。但很多情况下,并不容易确定用什么命令可以移到你想修改的地方。这时候,你就需要可视模式了。
 你可以用 "v" 命令启动可视模式。你可以移动光标到需要的地方。当你这样做的时候,中间的文本会被高亮显示。最后执行一下 "操作符" 命令即可。
 按 行 选 择
 如果你想对整行做操作,可以使用 "V" 命令来启动可视模式。你会发现在你作任何移动之前,整行都被高亮显示了。左右移动不会有任何效果。而通过上下移动,你可以一次选择多行。
    例如,用 "Vjj" 可以选中三行:

vim中的拷贝

一、copy and past
  要把文本从一个地方拷贝到另一个地方,你可以先删除它,然后用 "u" 命令恢复,再用"p" 拷到另一个地方。这里还有一种简单的办法:抽出 (yank)。"y" 命令可以把文字拷贝到寄存器中。然后用 "p" 命令粘贴到别处。
    yanking 是 Vim 中拷贝命令的名字。由于 "c" 已经被用于表示 change 了,所以拷贝 (copy) 就不能再用 "c" 了。但 "y" 还是可用的。把这个命令称为 "yanking" 是为了更容易记住 "y" 这个键。
  由于 "y" 是一个操作符,所以 "yw" 命令就是拷贝一个单词了。当然了,计数前缀也是有效的。要拷贝两个单词,就可以用 "y2w"
 "yy" 命令拷贝一整行,就像 "dd" 删除一整行一样。出乎意料地是,"D" 删除到行尾而"Y" 却是拷贝一整行。要注意这个区别!"y$" 拷贝到行尾。
 从剪贴板中copy和粘贴:
   要拷贝一行到剪贴板中:        "*yy
 要粘贴回来:        "*p
 以上仅在支持剪贴板的 Vim 版本中才能工作。更多的见:http://vcd.gro.clinux.org/doc/usr_09.html#09.3

vim中的文本对象

一、关于文本对象:
  文本对象是作为一个整体来处理的。现在光标在对象中的位置无关紧要。
  比如:aw 就代表光标所在处的一个文本对象,它是一个单词.如:
 "daw" 的 "d" 是删除操作符。"aw" 是一个文本对象。提示:"aw" 表示 "A Word" (一个单词),这样,"daw" 就是 "Delete A Word" (删除一个单词)。
 is表示inner sentence,表示光标所在的那行
 "cis" 包括 "c" (change,修改) 操作符和 "is" 文本对象。这表示 "Inner Sentence"(内含句子)。还有一个文本对象是 "as",区别是 "as" 包括句子后面的空白字符而 "is"不包括。如果你要删除一个句子,而且你还想同时删除句子后面空白字符,就用 "das";如果你想保留空白字符而替换一个句子,则使用 "cis"。
 你还可以在可视模式下使用文本对象。这样会选中一个文本对象,而且继续留在可视模式,你可以继续多次执行文本对象命令。例如,先用 "v" 启动可视模式,再用 "as" 就可以选中一个句子。现在重复执行 "as",就会继续选中更多的句子。最后你可以使用一个操作符去处理这些被选中的句子。
   详细的文本对象可见http://vcd.gro.clinux.org/doc/motion.html#text-objects:

简单键盘映射

一、map命令:
  映射可以使你把一系列 Vim 命令绑定为一个单独的键。假设你要用一个大括号将一个特
定的单词括起来。例如,把 "amount" 变成 "{amount}"。用 ":map" 命令,就可以让 F5
来完成这个工作。命令如下:
        :map <F5> i{<Esc>ea}<Esc>
 在输入这个命令时,<F5> 要用四个字符表示。相似地,输入 <Esc> 不是直接按<Esc> 键,而是输入五个字符。
 比如,在写cpp文件时,用<F5>键自动插入{},可以这样键盘映射:
  :map <F5> i{<Enter><Enter>}<Esc>ki<Tab>
 再举一例,键盘映射\i这个命令自动为单词加上(),可以:
 :map \i  bi(<Esc>ea)<Esc>
 有了map命令,可以把常用到的命令作为键盘映射,用得时候直接调用快捷键即可.

还有一种map命令,对于可视模式的:vmap
  如,给选中的文本加上<small></small>标签,快捷键为Ctrl+S
   :vmap <C-S> c<small><Esc>pa</small><Esc>
   或者::vmap <C-S> s<small><C-R>”</small><ESC>  //其中<C-R>"表示寄存器"
   取消键盘映射:vunmap <C-S>

一些其它命令:

*:读取光标处的字符串,并且移动光标到它再次出现的地方。
#:和上面的类似,但是是往反方向寻找。
i:在当前字符的左边插入
I:在当前行首插入
a:在当前字符的右边插入
A:在当前行尾插入
o:在当前行下面插入一个新行
O:在当前行上面插入一个新行
VIM 有一个非常漂亮的关键词自动完成系统。这表示,你可以输入一个长词的一部分,然后按一下某个键,然后 VIM 就替你完成了这个长词的输入了。举个例子:你有一个变量名为 iAmALongAndAwkwardVarName 在你写的代码的某个地方。也许你不想每回都自己一个一个字母的去输入它。
使用关键词自动完成功能,你只需要输入开始几个字母(比如 iAmAL),然后按 <C-N>(按住 Ctrl,再按 N)或者 <C-P>。如果 VIM 没有给出你想要的词,继续按,直到你满意为止,VIM 会一直循环它找到的匹配的字符串。

用 VIM 写代码

p:和 p 的功能差不多,但是它会自动调整被粘贴的文本的缩进去适应当前代码的位置。试一下!
%:匹配花括号、方括号、括号等。在一个括号的上面,然后按 %,鼠标就会出现在匹配的另外一半括号处。
>>:缩进所有选择的代码
<<:和上面类似,但是反缩进
gd:到达光标所在处函数或者变量的定义处。
K:在 Man 里面查找光标当前所在处的词。

显示Tab键:

文件中有 TAB 键的时候,你是看不见的。要把它显示出来:
        :set list
控制Tab的显示样式:
  :set listchars=tab:>-,现在,TAB 会被显示成 ">---"
     :set listchars=tab:-. 现在,TAB 会被显示成 "-..."
    以上以此类推,Tab的显示样式需要两个符号来控制.
设置详细的listchars可以详见:help 'listchars

设置文件的类别:

set filetype=cpp / set ft=perl
设置语法高亮:
   要在当前缓冲区中使用高亮,需要设置 'syntax' 选项:
        :set syntax=ON
 如果你想只对特定的文件采用语法高亮,可以使用这个命令:
        :syntax manual
 如果你要完全关闭这个功能:
        :syntax off
 使用色彩显示文本会影响效率。如果你觉得显示得很慢,可以临时关掉这个功能:
        :syntax clear

使用不同颜色

:colorscheme evening
"evening" 是色彩方案的名称。还有几种备选方案可以试一下。在 $VIMRUNTIME/colors
中可以找到这些方案。

转载于:https://www.cnblogs.com/shipfi/archive/2007/06/06/773980.html

Vim的一些使用技巧相关推荐

  1. vim编辑器的常用技巧

    vim编辑器的常用技巧 文章目录 vim编辑器的常用技巧 前言 Vi的使用 vi的三种模式 常用按键说明 Vim额外功能 多文件编辑 多窗口编辑 参考文章 前言 我们在使用 Windows 系统时,如 ...

  2. 用Vim编程——配置与技巧

    本文介绍如何用强大的文本编辑器 Vim编程.只要配置得当,效果堪比一个IDE. 配置 基本配置: "开启语法高亮 syntax on "依文件类型设置自动缩进 filetype i ...

  3. Linux vi/vim文本编辑器技巧, vim多窗口使用技巧

    Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地 ...

  4. vim文本编辑器使用技巧

    记录学习vim笔记 在linux系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数. 而且在日常工作中大家也肯定避免不了要编写文档,这些工作都是通过文本编辑器来完成的. 复制代码 接下来就来 ...

  5. vim“用sudo写”技巧如何工作?

    很多人可能已经看到了允许你在需要root权限的文件上写的命令,即使你忘了用sudo打开vim: :w !sudo tee % 问题是我不知道这里到底发生了什么. 我已经想到了这个: w就是为了这个 * ...

  6. Vim配置及使用技巧

    要说Linux下比较好用的文本编辑器,我推荐vim(当然很多人都用emacs,可我没用过),用vim也有一年左右,有些心得体会想与诸位分享.在我的学习过程中,借鉴了不少优秀的博客,其中有csdn大神n ...

  7. Linux编辑器之Vi、Vim的使用及技巧篇

    转载请注明出处:http://blog.csdn.net/yiliumu/article/details/20870921 我们如何在Linux这样的一个命令行界面下,来编写一些脚本,web页面,等等 ...

  8. 八、Linux编辑器之Vi、Vim的使用及技巧篇

    转载请注明出处:http://blog.csdn.net/yiliumu/article/details/20870921 我们如何在Linux这样的一个命令行界面下,来编写一些脚本,web页面,等等 ...

  9. vim快速选择一个单词技巧

    可视化前提下,即按v. 方法1.快速选中一个单词,按v,按e即可 按v是可视化,按e是选中一个单词: 方法2.Vim技巧----选取一个单词 - 你到底知不知道 - 博客园 下面就是一些命令含义: a ...

最新文章

  1. 缓存设计--读写锁场景实现
  2. 搞定Oracle SCN -system change number
  3. react结合redux的开发步骤
  4. python苦逼_自学Python编程的第六天(最后代码有更好的请告诉我)----------来自苦逼的转行人...
  5. rust腐竹是什么意思_学习Rust 集合与字符串
  6. sql服务器内存不足_SQL Server内存性能指标–第2部分–可用字节,总服务器和目标服务器内存
  7. java调试 Linux_Linux上调试java项目
  8. ValidationKey
  9. 搭建STM32开发环境——STM32CubeMX并配合Keil5重写跑马灯程序
  10. java程序员面试真题及详解2017(纯手动)
  11. 8uftp使用教程 图解,8uftp使用教程 图解
  12. 微型计算机b5040电源板,联想b5040一体机电源用普通ATX电源改的该法
  13. 思科模拟器服务器登录显示什么,思科模拟器服务器远程登录
  14. 和其正的复兴梦,藏在气泡水与凉茶的碰撞里?
  15. 【华为OD机试真题 JAVA】字符统计及重排
  16. R语言 lars包 lars()函数中文帮助文档(中英文对照)
  17. 给计算机图片文件夹加密码,文件夹怎么设置密码
  18. 3.7V降压3V超低功耗稳压芯片,外围简单
  19. LeetCode 题库 全 JAVA 解题---771.宝石与石头
  20. 反论文抄袭检查,吼吼,终于找到了

热门文章

  1. Eratosthenes筛选求质数
  2. CC2530中常用的控制寄存器
  3. springboot自动配置流程
  4. oracle:自定义函数
  5. http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.gridview.rowediting.aspx
  6. BZOJ 4584 [Apio2016]赛艇
  7. springboot获取URL请求参数的几种方法
  8. 【Python3网络爬虫开发实战】3-基本库的使用 1.2-处理异常
  9. 如何区分Android wrap_content和fill_parent的详细说明
  10. 技术评析:云计算与摩尔定律相悖?