Vi & Vim

使用vi和Vim系列文本编辑器的人员的问答

3
Vim正则表达式中的'\ zs'和'\ @ <='原子有什么区别?
这是我从文档中得到的结果:\zs匹配前面的正则表达式后\@&lt;=“启动突出显示的部分”,而匹配前面的原子后“启动突出显示的部分” 。但是我不完全理解这一点的微妙之处,所以谁能解释他们在深度上有何不同? 这就是让我感到好奇的原因:如果我跑步 /\_s\zsnnoremap 即选择nnoremap由空格或一个开始的行之前(即,从前述线路换行,因此\_之前的s),然后运行gn到进入的视觉模式和直观地选择下一个匹配,由于某种原因,仅在第一列(即第一n中nnoremap)选择-尽管事实上,整个nnoremap字凸显与:hlsearch开启。 但是,如果我改为运行搜索 /\_s\@&lt;=nnoremap 然后尝试gn,nnoremap正确选择了整个。这可能是怎么回事?我(敢说)发现了一些晦涩的错误吗?

1
取消完成
通常,插入模式完成(&lt;C-n&gt;)会在我第一次按时插入正确的词&lt;C-n&gt;,但并非总是如此。因此,我希望Vim在按时插入它认为最合适的匹配项&lt;C-n&gt;,但是如果正确的匹配项未显示或在列表中很长一段距离,仍然允许我取消此插入。 当然,我可以对这种行为进行编码,但是我觉得应该有一个标准的键(组合)来做到这一点。有人可以指出我正确的方向吗? 奖励问题:是否可以使用另一个键来获得最长的匹配(就像我按下之前一样&lt;C-n&gt;)? 为了它的价值,我正在使用 completeopt=menu


1
使用冒号代替分号的命令有什么优势?
Vi通过命令模式非常成功地最小化了手指移动和速度。 交换;并:似乎以保存其使用更多freqently比字母搜索repititions命令很多额外的换挡按键,但也有缺点,使用非标准键布局。 :for命令的优点是什么?与Vi整体的效率和优雅相比,我觉得我必须缺少一些逻辑。



2
使用Eslint时可悬挂Neomake
我一直在遵循以下两个教程来尝试设置eslint和Neomake: 用Neomake和Neovim整理代码 用Neovim和Neomake整理代码-ESLint版 所以我有以下最低限度 init.vim call plug#begin('~/.vim/plugged') Plug 'neomake/neomake' call plug#end() autocmd! BufWritePost,BufEnter * Neomake let g:neomake_verbose=3 let g:neomake_open_list = 2 let g:neomake_javascript_enabled_makers = ['eslint'] " neomake nmap &lt;Leader&gt;&lt;Space&gt;o :lopen&lt;CR&gt; " open location window nmap &lt;Leader&gt;&lt;Space&gt;c :lclose&lt;CR&gt; " close location window nmap &lt;Leader&gt;&lt;Space&gt;, :ll&lt;CR&gt; " go to current error/warning nmap …

2
如何确保未对文件进行任何更改
无论如何,我可以确保文件已锁定,因此无法对其进行任何更改。是否有用于锁定/解锁vim中文件的命令。有时我希望文件处于只读模式。
11 save 

3
如何使用标记跳到我最近打开但未更改的文件中的位置?
通常,我编辑文件-认为我的工作已经完成-然后关闭文件并继续进行下一步。但是后来我意识到我需要回到该代码并对其进行更多调整。 如果再次打开文件,则可以使用.标记并使用跳到上一次编辑的位置'.。 现在,我正在尝试找到一种方法,使用vim的标记跳转到我最近访问但未更改的文件中的位置。 我知道我可以手动设置标记,但是在大多数情况下,我不希望再回来,因此我不设置标记,而需要使用vim自动生成的标记。 该"标记看起来这可能是一种方式来实现这一目标,从:h motion。 " 最后一次退出当前缓冲区时的光标位置。默认为第一行的第一个字符。参见| last-position-jump | 有关如何对每个打开的文件使用此功能。每个缓冲区只记住一个位置,而不是每个窗口记住一个位置。只要缓冲区在窗口中可见,位置就不会改变。{Vi无此功能}。 但是如果我 关闭所有显示缓冲区的窗口(但该缓冲区仍存在于缓冲区列表中)。要么: 杀死缓冲区的所有实例 标记似乎没有更新,如何使用标记跳转到缓冲区/文件中最后一个光标位置的位置?

1
我可以使gvim不使用图形对话框来进行':set Confirm'吗?
我在Windows上经常使用gvim。我在.vimrc: set confirm 但是,这会打开一个小对话框,因此我必须使用鼠标退出。在命令行vim中,我得到以下信息: :q Save changes to "Untitled"? [Y]es, (N)o, (C)ancel: 无论如何,我可以将gvim配置为这种方式吗?
11 gvim 

4
Vim HardMode细颗粒运动
我最近发现了Vim硬模式,因此决定尝试使用它。但是,我遇到了细颗粒运动的一些问题。 例如,假设我真的只想向上或向下移动一行。由于j和k被禁用,因此我不确定有什么更好的替代方法。 我想向右或向左移动一个或两个字符时遇到了相同的问题。有谁知道如何取代这些类型的机芯? 这是我正在使用的插件:https : //github.com/wikitopian/hardmode。

3
如何在vim中插入细微差别的重复文本?
我想插入这样的文本: similar text wordA similar text ... similar text wordB similar text ... similar text wordC similar text ... 我知道我可以多次粘贴文本,然后使用替换为每行更改单个单词,但是我仍然发现此方法非常不便。 有没有一种方法可以将单词或单词列表保存到“变量”中,然后使用此变量生成相似的文本? 编辑我在原始问题中做了一些不清楚的事情,实际上,我正在尝试进行一些非常相似的函数定义,因此wordA wordB...在每个文本克隆中可能会出现很多次,并且文本可能包含很多行。模式完全是这样的: similar_text1 wordA similar_text2 wordA similar_text3 ... similar_text1 wordB similar_text2 wordB similar_text3 ... similar_text1 wordC similar_text2 wordC similar_text3 ... (文本可能包含换行,并且wordA,wordB ...可能存在多次) 第二次编辑 每次我做这样的工作时,“ similar_text”部分可能会有所不同,因此该工作的解决方案最好是可重用的。因为我试图做出非常相似的函数定义,或者将字符串映射到函数映射表。 阅读答案和实践后,我发现将这项工作视为某种替代更为方便,因为可能包含换行符的单独“ part1”,“ part2” ...“ …


1
是什么导致我的光标看起来如此奇怪?[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 3年前关闭。 每当我碰到行尾或行首时,都会在光标所在的位置得到这个非常奇怪的字符。知道是什么原因造成的吗?我相信我的字体和主题已正确安装。我在默认的xfce终端上使用Debian。
11 terminal  cursor 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.