Category: Vim

  • vim编辑多个文件(3种方法)

    方法一:直接打开多个文件

    vim file1 file2 file3

    现在默认打开的是file1,切换到下一个

    :n 或 :bn

    切换到上一个

    :prev 或 :bp

    查看完整的编辑列表及当前编辑的文件名

    :args 或 :buffers 或 :ls

    方法二:使用标签来打开不同的文件http://jpuyy.com/2013/11/vim-tabs.html

    方法三:使用窗口打开不同的文件

    Ctrl-W s 和 Ctrl-W v 可将当前编辑的文件水平或垂直显示。使用 :split and :vertical 同理 (:sp and :vs)

    Ctrl-W w 在不同的window依次切换, 或 Ctrl-W h (or j or k or l) 来根据方向切换

    Ctrl-W T 将当前 window 放到新 tab 里

    Ctrl-W _ 将当前窗口调整为最大高度

    Ctrl-W | 将当前窗口调整为最大宽度

    Ctrl-W = 将当前窗口与其他窗口均分高度宽度

    Ctrl-W R 将左右,上下 window 互换

    Ctrl-W c 会关闭当前的窗口, Ctrl-W o 会关闭其他所有窗口.

    使用vim -o(横割) 或 -O(竖割)会在不同窗口打开这些文件

  • vim打开光标下的文件

    当光标在某文件之上时,可以按如下操作直接打开该文件

    打开文件在当前窗口open in the same window (“goto file”)

    gf

    打开文件在新的窗口open in a new window (Ctrl-w f)

    <c-w>f

    打开文件在新的tab

    <c-w>gf open in a new tab (Ctrl-w gf)

    参考:

    http://vim.wikia.com/wiki/Open_file_under_cursor

  • vim tabs

    文本编辑器基本都有tab同时编辑多个文件,vim也不例外。甚至功能更强大。

    以例子来说vim tab的使用方法,nginx的配置文件很典型,就以它为例。

    同时编辑几个文件,可以这样,注意-p参数,这是以tab显示的关键

    vim -p nginx.conf fastcgi_params win-utf

    这时会显示3个标签

    如果这时要新加一个标签,输入

    :tabedit 简写 :tabe

    如果要关闭当前标签,除了可以常用的vim退出:wq外,可以使用

    :tabclose 简写 :tabc

    显示多个tab的列表

    :tabs

    标签的移动

    :tabm 0       move current tab to first 移动到第一个
    :tabm         move current tab to last 移动到最后一个
    :tabm {i}     move current tab to position i+1 向后移动i+1

    标签的切换

    :tabn         go to next tab 跳到下一个tab
    :tabp         go to previous tab 跳到上一个tab
    :tabfirst     go to first tab 跳到最前
    :tablast      go to last tab 跳到最后

    上面的操作太慢,在normal模式

    gt            go to next tab 跳到下一个tab
    gT            go to previous tab 跳到上一个tab
    {i}gt         go to tab in position i 跳到第i个tab

    使用快捷键则到为快速

    Ctrl-PgDn     go to next tab 跳到下一个tab
    Ctrl-PgUp     go to previous tab 跳到上一个tab

    当然可以在vimrc中规定更多的快捷键取代上面的操作。可以参考下面的链接。

    http://vim.wikia.com/wiki/Using_tab_pages

  • vimtutor学习笔记

    vimtutor是一个教程,教人学习使用vim,里面有一句很重要的话

    NOTE: As you go through this tutor, do not try to memorize, learn by usage.

    NOTE: Remember that you should be learning by doing, not memorization.

    vim属于工具,要以动手操作为学习目的,而不是去记忆。

    整理一下以前不清晰和新学到的知识点。

     

    Lesson 1.5: TEXT EDITING – APPENDING
    ** Press A to append text. ** 按大写的A,光标移动到当前行最后并切换到插入模式

    Lesson 2.1: DELETION COMMANDS
    ** Type dw to delete a word. ** 将光标移动到一个单词的开头字母,按下dw,删除当前单词及词后空格。

    Lesson 2.2: MORE DELETION COMMANDS
    ** Type d$ to delete to the end of the line. **按下d$,删除从光标位置到行尾的所有字

    Lesson 2.3: ON OPERATORS AND MOTIONS
    vim中很多修改命令是遵从 操作+动作  的。删除即:

    d motion

    那么
    d – 表示删除
    motion – 动作

    以下三个是动作
    w – 删除当前光标至下一个单词之前的字符
    e – 删除当前光标至当前词的末字符
    $ – 删除从光标位置到行尾的所有字符

    NOTE:可以发现如果不按d,则w表示跳到下一个单词的首字符,e表示跳到单词的尾字符,$表示跳到行尾。加数字表示计数,如3w会跳到后面第三个词的首字母,d3w表示删除三个单词。

    Lesson 2.7: THE UNDO COMMAND

    ** Press u to undo the last commands, U to fix a whole line. ** 小u是撤销操作,大U是恢复当前行到初始状态。CTRL-R表示重做,即undo the undo’s.

    Lesson 3.1: THE PUT COMMAND

    ** Type p to put previously deleted text after the cursor. **小p表示put之前操作过(删除,复制)的字符,当然也可以认为是paste。按p,“字符”会被放在光标的后面,“行”会放在当前行的下面。

    Lesson 3.2: THE REPLACE COMMAND

    ** Type rx to replace the character at the cursor with x . **按rx表示替换光标的字符为x。按大写的R会从当前字符替换,输入完成后按esc退出替换状态,详见Lesson 6.3: ANOTHER WAY TO REPLACE

    Lesson 3.3: THE CHANGE OPERATOR

    ** To change until the end of a word, type ce . **按ce会删除当前光标到词尾的字符并切换到插入模式。同样可以使用c$, cw, c3w等操作。

    Lesson 4.1: CURSOR LOCATION AND FILE STATUS

    ** Type CTRL-G to show your location in the file and the file status.
    Type G to move to a line in the file. **CTRL-G显示当前位置的信息,光标的行列等。

    Lesson 4.2: THE SEARCH COMMAND
    ** Type / followed by a phrase to search for the phrase. **搜索方法是/word,如果向下搜索使用小n,向上搜索使用大N;使用?搜索与使用/搜索正好相反。光标在搜索时跳到不同位置,要回到上一位置按CTRL-O 到下一位置按CTRL-I.

    Lesson 4.3: MATCHING PARENTHESES SEARCH

    ** Type % to find a matching ),], or } . **按%跳到),],}的配对。

    Lesson 4.4: THE SUBSTITUTE COMMAND
    ** Type :s/old/new/g to substitute ‘new’ for ‘old’. **替换

    #,#s/old/new/g 从第几行,到第几行将old替换为new

    %s/old/new/g 替换全部文件的old为new
    %s/old/new/gc 在全文件中替换,每一次替换会有提示要求确认。

    Lesson 5.1: HOW TO EXECUTE AN EXTERNAL COMMAND

    ** Type :! followed by an external command to execute that command. **执行:!+shell命令+回车  会执行命令,就不用退出vim再执行命令了。

    Lesson 5.3: SELECTING TEXT TO WRITE

    ** To save part of the file, type v motion :w FILENAME **保存部分文件,先按v,选取需要的行,然后按:w ttt,保存为ttt

    Lesson 5.4: RETRIEVING AND MERGING FILES

    ** To insert the contents of a file, type :r FILENAME **读取文件并插入到文档中,按:r filename会将filename的内容插入到当前文档中。:r !ls表示将ls的结果插入到文档中。

    Lesson 6.5: SET OPTION

    ** Set an option so a search or substitute ignores case **vim中使用“/”搜索,设置搜索高亮(hlsearch)和忽视大小写(ignore case)

    :set hls 搜索高亮

    :set nohlsearch 搜索不高亮

    :set ic 忽视大小写

    :set noic 不忽视大小写

    /abc\c 如果只搜索搜索一次,使用\c表示忽视大小写

    ‘ic’ ‘ignorecase’ 忽略大小写
    ‘is’ ‘incsearch’ 显示与搜索字符串部分匹配的字符串
    ‘hls’ ‘hlsearch’ 高亮所有匹配字符串

    Lesson 7.1: GETTING HELP
    ** Use the on-line help system **获取帮助,输入 :help <ENTER>

    使用CTRL-W在vim的不同窗口切换,使用:q退出当前窗口。 可以直接使用“:help 条目”的格式
    :help w
    :help c_CTRL-D
    :help insert-index
    :help user-manual

    vim还有更多的设置在vimrc中。

  • vim对文档进行排版

    1. 按v进入visual状态,选择多行,用>或<缩进或缩出

    2. 自动缩进排版,相当于code format

    当前行用== (连按=两次)
    对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。
    先使用gg使光标跳到第一行行首,再按=G可对整篇代码进行排版。

  • vim加减数字

    将光标移动到数字上 ctrl+a 为增大数字
    ctrl+x 为减小数字