vim笔记(1)

vim用了几年了,很多东西都还是不知道,最近找了点别人的PPT或文章来看,然后管它知道不知道,先做笔记再说。这次的笔记是一个PPT:《VIM - Hack Your Editor!》的内容,作者为yzlin:

1、vim的四个模式
    普通模式:移动
    插入模式:修改文本
    可视模式:选择内容
    命令模式:执行命令行
2、移动
    h, j, k, l    - 左,下,上,右
    ctrl+f - 向上翻页
    ctrl+b - 向下翻页
    0 - 行首
    $ - 行末
    gg - 首行
    G - 末行
    ngg/nG - 正数第n行
    n% - 假设文档共100行,则移动到第22行,即从开始算的百分比。
3、文件操作
    :wq<CR> - 保存并退出
    :x<CR> - 同上,保存并退出
    ZZ - 保存并退出,注意,这里没有冒号。即直接输入而不是命令模式下。
    :q<CR> - 直接退出,不保存。
    ZQ - 直接退出,不保存。这里也没有冒号,是普通模式下直接输入。
4、文本操作
    基本用法:
    i - 光标前插入数据。
    I - 行首插入数据。
    a - 光标后插入数据。
    A - 行末插入数据。
    o - 在下边新插入行。
    O - 在上边新插入行。
    s - 删除字符并进入输入模式。删除的内容保存在寄存器中。
    S - 删除行并进入输入模式。删除的内容保存在寄存器中。
    c - 通常用法为c{motion},作用为删除motion指定的文本并进入插入模式。比如c$,删除从光标位置到行尾的字符并进入插入模式;ct!,删除从光标位置到下一个感叹号的位置(不包括感叹号),然后进入插入模式。删除的内容保存在寄存器中。
    cc - 删除指定的行数。删除的内容保存在寄存器中。
    C - 从当前位置起删除本行余下的部分,并再删除n-1行。类似于命令c$,最后进入插入模式。删除的内容保存在寄存器中。
    r - 把光标下的字符换成{char}。5r<CR>则将五个字符替换为一个换行符。
    R - 进入修改模式,每个键入的字符都将替换光标下的一个字符。
    d - 通常用法为d{motion},作用为删除motion指定的文本。删除的内容保存在寄存器中。
    D - 从当前位置起删除本行余下的部分,并再删除n-1行。删除的内容保存在寄存器中。
    dd - 删除若干行。删除的内容保存在寄存器中。
    yy - 复制若干行。复制的内容保存在寄存器中。
    p - 将寄存器中的内容复制在光标之后。
    P - 将寄存器中的内容复制在光标之前。
    高级用法:
    gi - 返回上次编辑的位置。
    n - 这里的n代表任意一个数字,可以作为上边文本操作命令的前缀,表示重复执行n次。
5、可视化模式(v)下的文本操作
    w - 从当前位置开始,选择一个单词。
    iw - 选择当前位置所在的整个单词。选取多个单词时,单词之间的空白也被算作一个单词。
    i' - 从当前位置向后选择第一对单引号中的内容,不包括单引号。同理如i",i<等。
    a' - 从当前位置向前选择第一对单引号中的内容,包括单引号。
    注:可以使用 set iskeyword来定义单词分隔符。
6、举例
    dw - 删除单词,空白字符不计入单词数。
    diw - 删除单词,空白字符也算一个单词。
    cw - 删除单词,并进入插入模式。空白字符不计入单词数。
    ciw - 删除单词,空白字符计入单词数。
    di"/di'/di[/di{/di(/dit - 删除一对标签中的所有字符,不包含引号。其中,dit所对应的标签为HTML/XML标签。
    ci"/ci'/ci[/ci{/ci(/cit - 见上一条。
    da"/da'/da[/da{/da(/dat - 见上一条,da'和di'的区别在于删除的内容是否包含引号。
    ca"/ca'/ca[/ca[/ca(/cat - 见上一条。
    gui" - 将双引号中的字符变为大写。
    gua[ - 将中括号中的内容变为小写。
7、可视模式
    v - 字符选择模式。
    V - 行选择模式。
    ctrl-v - 块选择模式。
    注:使用了ctrl-v后,再再使用大写的A或I就可进入插入模式。
8、文本查找
    set wrapscan - 继续搜索直到文件的尾部。
    set incsearch - 在输入查找的同事就对内容进行匹配,并显示匹配的位置。
    set ignorecase - 不区分大小写。
9、窗口分割
    ctrl-w + s/v - 水平/垂直分割
    ctrl-w + h/j/k/l - 移动到左/下/右/上的窗口
    ctrl-w + ctrl-w - 移动到右/下方的窗口
    ctrl-w +/-/=/_ - 增加/减少/等分/最大化窗口
10、多个标签页操作
    tabedit <file> - 在新的标签页中编辑文件。
    tabnew - 新建一个标签页。
    tabclose - 关闭当前标签页。
    tabprev - 切换到前一个标签页。
    tabnext - 切换到后一个标签页。
    tabmove <index> - 将当前标签页移动到index标签页之后。
    tabnext <index> - 切换到某个标签页。
    set showtabline=2 - 设置是否显示标签页的标签。0为不显示,1为只有当多余两个的时候才显示,2为总是显示。
11、热键设置
    nmap <LEADER>tc :tabnew<CR> - tabnew映射为tc。
    nmap <LEADER>te :tabedit<SPACE> - tabedit映射为te。
    nmap <LEADER>tm :tabmove<SPACE> - tabmove映射为tm。
    nmap <LEADER>tk :tabclose<CR> - tabclose映射为tk。
    nmap <C-H> :tabprev<CR> - tabprev映射为ctrl+h。
    nmap <C-L> :tabnext<CR> - tabnext映射为ctrl+l。
注意:
    a、<LEADER>如果未指定则为'\',可以通过let mapleader = "key"的方式来指定。
    b、nmap和map的区别在于:nmap只能工作与普通模式下,而map可以工作在普通,可是,选择模式下。
12、快速切换功能
autocmd TabLeave * let g:LastUsedTabPage = tabpagenr()
function! SwitchLastUsedTab()
    if exists("g:LastUsedTabPage")
        execute "tabnext " g:LastUsedTabPage
    endif
endfunction
nmap tt :call SwitchLastUsedTab()<CR>
注意:
a、 tabpagenr()为获取当前标签页的编号。
b、 function表示定义一个新的函数,而后边的感叹号表示覆盖之前出现的同名函数,并且不报错。如果不指定感叹号,则会报错。
c、autocmd中的tableave表明在离开标签页之前将g:LastUsedTabPage设定为当前标签页的编号。
d、这段的意思是执行tt命令时切换到下一个标签页。
13、折叠
    set foldenable - 开启折叠选项。
    set foldmethod=syntax (manual, indent) - 选择折叠的方式,自动还是手动。
    set foldlevel=10000 - 设定折叠的级别。为0则关闭所有折叠。
    set foldcolumn=3 - 如果非0,则指定宽度列在窗口的一侧显示。指示折叠的打开和关闭。
    nnoremap <SPACE> za - 将空格映射为打开和关闭折叠。
14、拼写检查
    Spell checking on/off - 设置打开或关闭拼写检查。
    set spell/set nospell - 开启或关闭拼写检查。
    set spelllang=en - 以英文的形式进行拼写检查。
    hi SpellBad term=underline cterm=underline ctermfg=red - 设置高亮显示拼写错误。
    map <F5> :set spell!<CR><BAR>:echo “Spell check: “ . strpart(“OffOn”, 3 * &spell, 3)<CR> - 设置热键F5为拼写检查。
15、杂项
    set showcmd - 在屏幕的最后一行显示命令。
    set backup - 设置是否需要备份。
    set backupdir=$HOME/.vim/backup - 设置备份的目录。
    set tabstop=4 - 将tab设置为4个空格的宽度。
    set shiftwidth=4 - 将缩进设置为4个空格。
    set softtabstop=8 - 一个tab表现为4个空格。
    set expandtab/noexpandtab - 在缩进和遇到tab键时使用空格替代。
set list - 将不可打印字符显示出来。
    set listchars=tab:>-,trail:-,eol:$,nbsp:%,extends:>,precedes:<
- 设置不可打印字符在需要显示时显示的状态。  比如tab显示为'>-'  
其中:
    a、eol:行末。
    b、tab:制表符。
    c、trail:尾部的空格。
    d、extends:最后一列显示的字符,当关闭wrap时,超出了屏幕的右侧还存在文本。
e、precedes:第一列显示的字符。当关闭wrap时,超出了屏幕左侧还存在的文本。
    f、nbsp:不能折行的空格。non-breakable space。
    noremap <LEADER>st :set list<CR> - 映射显示标记为st。
    noremap <LEADER>ct :set nolist<CR> - 映射不显示标记为ct。


autocmd BufReadPost *
    \ if line(“‘\’”) > 0 && line(“‘\””) <= line(“$”) |
    \ exe “normal g`\”” |
    \ endif
打开一个文件后,自动跳转到上次退出时的位置(这些信息保存在~/.viminfo中)。


 vim scp://HOST//PATH/TO/FILE - 通过网络来编辑文件。
C-a/C-x - 如果光标下边是数字的话,会对数字进行递减/递增操作。
16、编码辅助功能
    set showmatch - 设置匹配模式,类似易于光标在左括号上会显示右括号的位置。
    hi MatchParen ctermbg=yellow - 匹配到的括号显示为黄色。 
    % - 显示一对匹配的模式(括号)。如果光标在模式内,则定位到左括号;光标在模式外,则定位在右括号。
17、vimrc编写注意事项(跨平台)
windows - has(“win32”) & has(“win64”)
mac - has(“mac”) & has(“macunix”)
unix - has(“unix”)
使用augroup和autocmd来个性化文件设置。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值