- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道将自己限制在 vanilla Vim(不使用插件)会限制编辑器的功能,但是当我经常在不同的机器之间切换时,到处移动我的环境通常会很麻烦。我只想留在 Vanilla Vim 中。
阻碍我的是在文件之间快速切换的能力。
我(至少相信)对缓冲区、窗口、选项卡以及 netrw( Vex
、 Ex
等)有很好的理解。
但是在诸如Sublime Text之类的编辑器中,我只需输入 ctrl-p 即可立即进入该文件。
我知道我可以下拉到 shell,但我想知道是否有任何其他“隐藏的” secret 可以根据文件名在 Vim 中的文件之间快速切换。
最佳答案
与 ST2 的 Ctrl+P 最接近的等价物(“最接近”,而不是“精确”)是一个名为的插件,准备好... CtrlP .还有其他类似的插件,如 Command-T或 FuzzyFinder .
我使用 CtrlP 并且我喜欢它,但我全心全意地支持您决定“无插件”。这不是最简单的方法,但从长远来看会有所返回。
打开文件
打开文件的最基本方法是 :e /path/to/filename
.值得庆幸的是,您可以获得制表符完成和通配符:经典 *
还有一个特别的,**
,代表“任何子目录”。
结合所有这些,您可以执行以下操作:
:e **/*foo<Tab>
foo
的文件中进行选择在工作目录下以他们的名义或:
:e **/*foo/*bar<Tab>
bar
的文件中进行选择在包含
foo
的任何子目录下的名称中在其名称中,位于工作目录下的任何位置。
:tabe[dit]
,
:sp[lit]
和
:vs[plit]
,也是。
:next
打开多个文件:
:next **/*.js
:help arglist
.
:b[uffer]
是基本的缓冲区切换命令:
:b4 " switch to buffer number 4
:bn " switch to next buffer in the buffer list
:bp " switch to previous buffer in the buffer list
:bf " switch to first buffer in the buffer list
:bl " switch to last buffer in the buffer list
:b foo<Tab> " switch by buffer name with tab-completion
:b# " switch to the alternate file
:ls
命令显示加载缓冲区的列表。不过,它有点“特殊”:缓冲区在创建时会被分配一个编号,因此您可以拥有一个类似于
1 2 5
的列表。如果删除缓冲区。这有点尴尬,是的,这使得按其编号切换到缓冲区有点太麻烦了。首选按部分名称切换,
:b foo<Tab>
或骑自行车,
:bn :bp
.
<enter>
:
nnoremap gb :ls<CR>:b<Space>
gb
(quickly scanning the list)
3<CR>
gb
(quickly scanning the list)
foo<tab><CR>
<C-^>
(或
<C-6>
在某些键盘上)—正常模式等效于
:b#
— 在当前缓冲区和前一个缓冲区之间跳转。如果您经常在两个缓冲区之间交替使用,请使用它。
:help buffers
中阅读有关缓冲区的所有信息.
gd
或
gD
.
:tag foo
和
<C-]>
将光标放在方法名称上。这两个工具都很好地集成到 Vim 中:见
:help tags
,
:help ctags
和
:help cscope
.
:CtrlPTag
和
:CtrlPBufTag
命令,大多数情况下,但也使用内置命令),我最喜欢的“通用”缓冲区切换方法是按名称。
.vimrc
并重温了几个被遗忘的本土特征。在那场演出之后,我认为 CtrlP 不是必需的并摆脱了它: native 功能和自定义映射并不那么性感,但它们可以在没有太多依赖性的情况下完成工作。
set path=.,**
nnoremap <leader>f :find *
nnoremap <leader>s :sfind *
nnoremap <leader>v :vert sfind *
nnoremap <leader>t :tabfind *
:find
是一个真正伟大的命令
set path
正确。使用我的设置,
,ffoo<Tab>
将找到所有包含
foo
的文件在当前目录下,递归。它快速、直观且轻便。当然,我受益于与
:edit
相同的补全和通配符。和 friend 。
nnoremap <leader>F :find <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>S :sfind <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>V :vert sfind <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>T :tabfind <C-R>=expand('%:h').'/*'<CR>
path
选项非常强大。上面的值— .,**
— 对我有用,但我使用的语言没有标准库。正确的值完全取决于您的需要。
set wildcharm=<C-z>
nnoremap <leader>b :buffer <C-z><S-Tab>
nnoremap <leader>B :sbuffer <C-z><S-Tab>
<Tab>
导航菜单。或输入几个字母和
<Tab>
再次缩小列表。与上面的文件映射一样,这个过程很快而且几乎没有摩擦。
nnoremap <PageUp> :bprevious<CR>
nnoremap <PageDown> :bnext<CR>
nnoremap <leader>j :tjump /
,jba<Tab>
寻找标签
foobarbaz()
.
set wildmenu
启用的“wildmenu” , 使文件/缓冲区导航更容易。它的行为受一系列值得研究的选项控制:
wildmode
告诉 Vim 你希望“wildmenu”如何表现:
set wildmode=list:full
wildignore
过滤掉所有的垃圾:
set wildignore=*.swp,*.bak
set wildignore+=*.pyc,*.class,*.sln,*.Master,*.csproj,*.csproj.user,*.cache,*.dll,*.pdb,*.min.*
set wildignore+=*/.git/**/*,*/.hg/**/*,*/.svn/**/*
set wildignore+=tags
set wildignore+=*.tar.*
wildignorecase
允许您搜索
foo
并找到
Foo
:
set wildignorecase
augroup VIMRC
autocmd!
autocmd BufLeave *.css normal! mC
autocmd BufLeave *.html normal! mH
autocmd BufLeave *.js normal! mJ
autocmd BufLeave *.php normal! mP
augroup END
~/.vimrc
中发现了这颗 gem .每当您离开缓冲区时,它都会在光标的确切位置创建一个文件标记,以便无论您身在何处,
'J
跳转到您编辑的最新 JavaScript 缓冲区。太棒了。
关于vim,使用 vanilla Vim 快速切换文件(无插件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082991/
我有 虚拟机 在 马克 & CentOS .所以,我看到人们在写 -xterm_clipboard , -lua , ... 有没有一种简单的方法来安装它?或者我们必须一个一个地启用选项并编译/重新编
默认情况下,Vim 在 ~/.vim 中寻找插件和其他东西。 有没有办法告诉 Vim 在 ~/.other_folder 中搜索插件等,并强制它完全忽略 ~/.vim? 最佳答案 Vim 使用来自 '
我正在尝试处理一系列文件。我注意到从命令行(即 ex 模式)运行特定命令时存在差异。例如。 $cat poo.txt big red dog small black cat $vim -c "2,$g
我正在尝试将所有与 vim 相关的文件/插件整合到 ~/.vim 中文件夹,以便我可以将其转储到 github 并开始使用病原体。但是,现在我所有的 vim 插件都散落在各处。 例如,语法插件在 /u
所以我的 ~/.vimrc 文件中的设置正确设置 set mouse=a set ttymouse=xterm2 但是,当我使用 vim 并尝试使用鼠标滚轮滚动时,命令提示符上的滚动条会移动,而不是
我试图尝试 vim 在启动时加载的自动加载文件。我将 example.vim 文件保存在: ~/.vim/autoload/ 目录并编写了一个非常简单的函数: echom "Autoloading..
这个问题已经有答案了: How can you check which options vim was compiled with? (3 个回答) 已关闭 7 年前。 我在多台计算机上使用相同的 V
我需要将一些设置和变量写入一些文本文件以供以后检索。检索文件可以是一个简单的源命令。那么从 vimscript 写入文件的最简单方法是什么? 我只想存储一些全局变量。全局的,因为它们将被多个缓冲区使用
如何使 vim 列(:set 光标列)具有不同的颜色?这是我现在看到的: 请注意,列颜色与 vim 用于标记我的身份等的颜色相同(我认为是背景颜色)。我想选择不同的颜色。 干杯:) 最佳答案 使用这个
我试图尝试 vim 在启动时加载的自动加载文件。我将 example.vim 文件保存在: ~/.vim/autoload/ 目录并编写了一个非常简单的函数: echom "Autoloading..
我正在修改已安装的 VIM 插件,并在另一个终端选项卡中测试结果。每次我想测试更改时,我都必须重新启动 VIM。 有没有更快的方法来完成这个过程?如何在 VIM 启动后重新加载 VIM 插件? 插件是
一个简单的例子: function! Foo() echom 'Starting Foo' let x = Bar(123) " Function does not exist so
有没有办法让 Vim 像带有 explorer 插件的 notepad++ 或 pspad、ultraedit 和 editplus 等其他文本编辑器一样工作? 也就是 保持文件浏览器始终在左侧(左侧
经过多次谷歌搜索后,我无法使 Vim 的代码隐藏功能与 Javascript 和 Typescript 一起使用(无需插件)。 我一直在尝试在我的 .vimrc 中使用如下行来隐藏我的代码,但没有任何
我有以下问题:在 Pycharm 中试验 vim 宏时(我使用的是 Idea Vim 插件)- 我输入了一个简单的宏并让编辑器运行它 100 次。执行速度非常慢,我无法使用 these 中的任何一个来
如何在 vim 中将字符串(4000 到 4200)替换为(5000 到 5200).. 最佳答案 另一种可能性: :%s/\v/5\1/g 这个也能做 200 次,而且由于使用了 \v switch
示例:我有一些文本,比如这个 php 代码 if(empty($condition)) { // work here... } 我的默认寄存器包含字符串“$NewCondition”。 我想将
有时我想在当前缓冲区上应用一些自定义的额外语法突出显示。 如何使用内置的 vim 语法/高亮系统来完成(我不想使用 Highlight 插件) 例如,我想突出显示当前缓冲区中的所有断言语句。 最佳答案
我有一个ora文件,它的长度为200,000行,但最后60,000行的某些行都是空白回车/空格。 我知道G会跳到文件末尾,但是我是否将vim配置为跳到非空格和非回车符的最后一行或字符? 最佳答案 G?
我想在退出vim后看到屏幕原来的内容就像打开文件之前一样,我的文件不是退出而是原始显示不存在 谢谢 最佳答案 在运行全屏应用程序后返回屏幕内容与将内容保留在那里的功能并不特定于 vi,而是特定于您的终
我是一名优秀的程序员,十分优秀!