vim用法记录

  1. 快捷键

1. 光标移动

H:将光标移动到屏幕的顶行
nH:将光标移动到屏幕顶行下的第 n
M:将光标移动到屏幕的中间
L:将光标移动到屏幕的底行

2.屏幕移动

z-return :将当前行置为屏幕的顶行
z.:将当前行置为屏幕的中央

z-  :将当前行置为屏幕的底行

3.打开快速窗口
:cw

4.标记
m(a-z) 用一个字母来标记当前位置,如用 mz 表示标记 z
'(a-z) 将光标移动到指定的标记,如用 'z 表示移动到 z

5.buffet
删除minibufexpl中某一个buffet
将光标移动到最底部窗口,按d 回车即可删除.

强制切换bufer:
next! -> 强制编辑下个文件,这里指如果更改了第一个文件 (force to next file in buffer if current buffer changed)

6.找到变量定义的地方
gd 
跳回 ctrl + o

7.vim插入1..100
:r !seq 1 10

8. 10 -> 15
In normal mode, typing Ctrl-A will increment the next number, and typing Ctrl-X will decrement the next number. The number can be at the cursor, or to the right of the cursor (on the same line). These are the defaults for Vim, although some scripts remap these keys to perform other functions.
These keys work with a count. For example, pressing 5 then Ctrl-A will increment the following number five times (add 5).

9.宏的用法
qa
Y
p
Ctrl-A
q
Now type 15@a to perform the macro 15 times. You will see:
101 This is an item.
102 This is an item.
103 This is an item.
104 This is an item.
and so on

10.全选
ggvG

11.上次选择的可视化区域
gV

12.跳转到鼠标下的文件
gf

13.大小写转换
【guu 】 – 把一行的文字变成全小写。或是【Vu】
【gUU】 – 把一行的文件变成全大写。或是【VU】
【v】键进入选择模式,然后移动光标选择你要的文本,按【u】转小写,按【U】转大写
【ga】 –  查看光标处字符的ascii码
【g8】 – 查看光标处字符的utf-8编码
~ 大小写切换

14. 全局 (global)

这个不知道怎么翻译,反正vim是叫做global,可以对搜索到的东西执行一些vim的命令。我也是2-3个星期前因为读log中一些特殊的东 西,才学会用的。 (find the match pater and execute a command)

global具体自行方法是 g/pattern/command
:g/abc/p -> 查找并显示出只有abc的行 (only print line with “abc” )
:g/abc/d -> 删除所有有abc的行 (delete all line with “abc”)
:v/abc/d -> 这个会把凡是不是行里没有abc的都删掉 (delete all line without “abc”)


15.跳转到第N行
nG
:3 <enter>

16.跳转记录
:ju 查看所有跳转记录,
:jumps 查看所有跳转记录, 输入 “:<num>” 可跳转.
* <ctrl> + o 返回上一次跳转处.
* <ctrl> + i 和 <ctrl> + o 反向转处.

17.缩进
【=】 - 缩进当前行 (和上面不一样的是,它会对齐缩进)
【=%】 – 把光标位置移到语句块的括号上,然后按=%,缩进整个语句块(%是括号匹配)
【G=gg】 或是 【gg=G】 - 缩进整个文件(G是到文件结尾,gg是到文件开头)

18.如何调整vim窗口大小?
输入次序: Ctrl-w 行数 +
Ctrl-w+ 把当前窗口高度增加”行数”行(如不指定行数,默认为1)Ctrl-w- 把当前窗口高度减少”行数”行(如不指定行数,默认为1)Ctrl-w= 让所有窗口一样高Ctrl-w_ 把当前窗口的高度设为”行数“,如不指定则把它最大化。
也可以用 :set mouse=a 用鼠标来拉

19.vim重复上一行内容
vim 中一很让人喜欢的功能之一就是 <C-y>,
按 Insert 模式下,<C-y>可以自动重复上一行相同的字符。

20.我复制一段代码,里面有// 只有一行,但是复制到vim中就下面全部都有//了。我要取消这个功能
set formatoptions+=c 搞定
原因:

选项 formatoptions 确定了跟文本格式化有关的基本选项,常用的数值有:

  • t:根据 textwidth 自动折行;
  • c:在(程序源代码中的)注释中自动折行,插入合适的注释起始字符;
  • r:插入模式下在注释中键入回车时,插入合适的注释起始字符;
  • q:允许使用“gq”命令对注释进行格式化;
  • n:识别编号列表,编号行的下一行的缩进由数字后的空白决定(与“2”冲突,需要“autoindent”);
  • 2:使用一段的第二行的缩进来格式化文本;
  • l:在当前行长度超过 textwidth 时,不自动重新格式化;
  • m:在多字节字符处可以折行,对中文特别有效(否则只在空白字符处折行);
  • M:在拼接两行时(重新格式化,或者是手工使用“J”命令),如果前一行的结尾或后一行的开头是多字节字符,则不插入空格,非常适合中文

上面提到的注释,可以是 C/C++ 中的“//”和“/*”,也可以是邮件中引用原文使用的“>”等字符(具体由 comments
选项控制;参见“:help 'comments'”)。Vim
在遇到这些字符时,能够相当智能地进行处理,足以完成日常编辑源代码和邮件的需要。在使用一些处理纯文本不够强大的邮件客户端时,我通常使用 Vim
编辑邮件(特别是英文邮件),然后把结果贴回到邮件编辑窗口中进行发送。
Vim 中 formatoptions 的缺省值是“tcq”,一般我会在 .vimrc 文件中加入一行“set formatoptions+=mM”来确保 Vim 能在中文字符之间折行而不要求空格的存在,并且在大部分情况下可以正确地处理中文重新格式化。

放弃修改,重新载入文件

:e filename

打开文件filename进行编辑[相当于退出当前的并打开另一个文件]?

:e!

放弃修改文件内容,重新载入该文件编辑

:e

重新载入【类似刷新】

2.窗口
:split 新建一个窗口,将当前窗口分割成两半,他们显示的是相同缓冲区的内容(同一个文件)。这样就可以在两个窗口中浏览相同的文件了。
:vsplit创建全新的垂直分割的窗口,同样是显示和当前窗口同一个文件内容。效果如下:
当多个窗口编辑同一个文件时,在任意一个窗口进行编辑(例如删除一行),那么所有相同文件的窗口上都会同时反应效果,因为他们共享同一个文件缓冲区。

在窗口间游走
在gvim或vim中,在窗口中移动其实非常简单,因为gvim已默认支持鼠标点击来换编辑窗口,而vim中,则可以打开mouse选项,
:set  mouse = a   为命令、输入、导航都激活鼠标的使用
我们知道vim的特色就是可以脱离鼠标而工作,所以可以使用vim提供的全套导航命令,在会话中快速而准确的移动编辑窗口。
按住Ctrl + W,然后再加上h, j, k, l,分别表示向左、下、上、右移动窗口
Ctrl + w + h:向左移动窗口
Ctrl + w + j: 向下移动窗口
Ctrl + w + j: 向上移动窗口
Ctrl + w + l: 向右移动窗口
Ctrl + w + w:这个命令会在所有窗口中循环移动
Ctrl + w + t:移动到最左上角的窗口
Ctrl + w + b:移动到最右下角的窗口
Ctrl + w + p:移动到前一个访问的窗口
移动窗口
vim中有两种移动窗口方式,一种只是简单地在屏幕上切换窗口,尺寸维持不变;另一种则是改变窗口的实际布局,还会调整尺寸,以填充它移动的位置。
移动窗口本身(轮换或交换)
Ctrl + w + r:向右或向下方交换窗口,而Ctrl + w + R则和它方向相反。
光标会随着窗口而移动
Ctrl + w + x:交换同列或同行的窗口的位置。vim默认交换当前窗口的与它下一个窗口的位置,如果下方没有窗口,则试着与上一个窗口交换位置。亦可在此命令前加上数量,与制定的窗口交换位置。
移动窗口并改变其布局
注:下面的第三个字母都是大写,按玩Ctrl + w之后,按shif + 相应的字母。后面用^代替Ctrl
Ctrl + w + K :移动当前窗口至屏幕顶端,并占用全部宽度
^WJ: 移动窗口至屏幕底端,并占用全部宽度
^WH:移动窗口至屏幕左端,并占用全部高度
^WL:移动窗口至屏幕右端,并占用全部高度
^WT :移动窗口至屏新的现有分页
3. 调整窗口尺寸
改变当前窗口的尺寸,同时当然也会影响到其他窗口。
在gvim和vim中,可以用鼠标点击窗口的顶部白色条并窗口直接调整尺寸。
也可以直接用命令,调整尺寸命令也是以Ctrl + W开头:
Ctrl + W + =  :让所有窗口调整至相同尺寸(平均划分)
Ctrl + W + -:将当前窗口的高度减少一行,也可在ex命令中,:resize -4明确指定减少的尺寸
Ctrl + W + +:将当前窗口的高度增加一行。同样在ex命令中,:resize +n 明确指定增加尺寸
Ctrl + W + < :将当前窗口的宽度减少
Ctrl + W + > :将当前窗口的宽度增加
Ctrl + W + |:将当前窗口的宽度调到最大,也可他哦你通过ex命令:vertical resize n明确指定改变宽度

===================2016.05.12更新===================

需求1: 编辑 a 文件,想打开同样的一个垂直窗口编辑 a 文件

:vs 垂直窗口
:sp 水平窗口

需求2:a,b,c 三个窗口, 想从c 调到 a

2Ctrl+w+j

需求3:a,b 水平窗口,想切换成垂直窗口?


Ctrl + w + b:移动到最右下角的窗口,快速移到标签窗口
Ctrl + w + t:移动到前一个访问的窗口,快速移到文件浏览窗口
ctrl  + w +p :上一个窗口




关闭与离开窗口


有4种关闭窗口的方式,分别是:离开(quit)、关闭(close)、隐藏(hide)、关闭其他窗口

^代表Ctrl键
^Wq,离开当前窗口
^Wc,关闭当前的窗口
^Wo,关闭当前窗口以外的所有窗口

3.书签

* :marks 查看所有书签, 输入 “:<num>” 可跳转.
* m<name> 定义书签, 如 ma 在当前行定义名为 a 的书签.
* `<name> 跳转到某书签, “`” 为键盘 Tab 上一行第一键.

4.quickfix窗口

:cc 显示详细错误信息:cp 跳到上一个错误
:cn 跳到下一个错误:cp 跳到上一个错误
:cl 列出所有错误
:cw 如果有错误列表,则打开quickfix窗口,没有则什么也不错
:copen 打开quickfix窗口,可以在后面添加窗口高度参数,如10行: :copen 10
:cclose 关闭quickfix窗口
:col 到前一个旧的错误列表:cnew 到后一个较新的错误列表

5.插件
1.nerdtree
A  全屏与半屏展示目录
CD 切换到鼠标下面的目录

2.Ctrlp
ctrlp查找文件,会默认以当前怎么切换根目录呢?
:CtrlP [starting-directory]
   Open CtrlP in find file mode.
   If no argument is given, the value of |g:ctrlp_working_path_mode| will be
   used to determine the starting directory.
 map <leader>cp :CtrlP<cr>
 let g:ctrlp_regexp = 1        //使用正则表达式
 let g:ctrlp_by_filename =1   // 文件名 而不是路径查找
 let g:ctrlp_working_path_mode = 'rw'
 let g:ctrlp_user_command = 'find %s /home/map/odp_hotel/app  /home/map/odp_hotel/conf  -type f | grep -v ".svn" | sort | uniq |  grep  -P "\.php$|\.conf"'    // 自定义查找目录, 要有%s,不然会报错, 除了%s,然后加上自定义目录就ok

        
2.自动补全
vim的自动补全插件

6.代码格式化

配置快捷键
<span style="font-size:12px;">map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
   ecec "w"
 if &filetype == 'c'
   exec "!g++ % -o %<"
   exec "!time ./%<"
 elseif &filetype == 'sh'
   exec "!bash %"
 elseif &filetype == 'php'
   <strong>exec "!phpfmt -p=%"   #如果是php代码,格式化</strong>
elseif &filetype == 'python'
   exec "!python %" 
elseif &filetype == 'mkd'
   exec "!~/.vim/markdown.pl % > %.html &"                                      
endif       
endfunc     
</span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

anssummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值