我为我正在做的作业制作了一些测试文件,但我不确定为什么vim会在文件末尾给我额外的字符.
所以我创建了一个包含A,B和C的"ABC"文件,最后没有新行.所以像
vim ABC
AAAABBBCC
Run Code Online (Sandbox Code Playgroud)
我输出了部分读取代码
46 while(1) {
47 ch = infile.get();
48 if(infile.eof()) {
49 break;
50 }
51 cout << '~' << ch << '~' << (int)ch << '~' << endl;
52 v[(int)ch]++;
53 }
Run Code Online (Sandbox Code Playgroud)
我得到了
~A~65~
~A~65~
~A~65~
~A~65~
~A~65~
~B~66~
~B~66~
~B~66~
~C~67~
~C~67~
~
~10~
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我在输入文件中输入换行符
我想在vim中替换搜索到的表达式.
例如:
我用的表达式搜索:/0x....- >它将搜索格式的所有字符串
0x0001,0x0002,0x1234,等.
现在,我想的东西,如更换上面的搜索项目0x0001_mystring,0x0002_mystring,0x1234_mystring等等.
我刚刚升级到Vim的7.4,但它看起来像当我被删除的单词或句子x或D,并试图解开它,我不能与消息撤消:Already at newest change.重做也没有用.为什么?我已经使用OS X内置的Vim(7.3)多年,并且没有与undo/redo相关的问题.
那么我该如何解决呢?或者在7.4中撤消和重做已经不存在了?最后,将我的文件恢复到删除之前的状态是否可行?
我能够扫描线与下一个字符f{char},并重复;或反向用,.
但是当我使用t{char}它时,它不起作用f{char}.它找到第一个但不能重复它;.
为什么是这样?
.vimrcexecute pathogen#infect()
syntax on
"filetype plugin indent on
set expandtab
set shiftwidth=2
set softtabstop=2
colorscheme darkblue
set cursorline
hi Comment ctermfg=103
hi CursorLine term=none cterm=none ctermbg=17 guibg=236
set hlsearch
set number
set nowrap
set omnifunc=pythoncomplete#Complete
set omnifunc=javascriptcomplete#CompleteJS
set omnifunc=htmlcomplete#CompleteTags
set omnifunc=csscomplete#CompleteCSS
set omnifunc=xmlcomplete#CompleteTags
set omnifunc=phpcomplete#CompletePHP
set cmdheight=1
set laststatus=2
set statusline=%<%F\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ %c%V%8P
nmap <C-l> <C-l>:nohlsearch<CR> …Run Code Online (Sandbox Code Playgroud) 我是vim的新手,这对我来说很难谷歌因为我不知道如何表达我想做的事情.
使用此屏幕截图作为参考:
我想强调以下文本块:

有没有办法强制vim突出显示这样的任意文本块?
我可以在第8行到第11行的正方形中突出显示文本,但是当我向下移动到结束括号时,它只突出显示一列.
从这里:

如果我向下移动一行,它只会选择第一个屏幕截图中的文本.
我已经使用vim几天了,我真的很喜欢键绑定和单独的模式.我真的希望能够在使用各种快捷方式等时提高效率.它必须提供.
例如,我有一个视觉工作室的vim扩展,我有这行代码:
SqlCommand sqlcmd = new SqlCommand();
Run Code Online (Sandbox Code Playgroud)
我想进入大括号,所以我尝试了5W,这把我带到第一个支架,然后我按下'L'进入并且'我'进入插入模式.
我不觉得我正在利用它的潜力,有没有人有任何建议,他们会更快地做到这一点?或建议我可以看到的东西,以便使用vim提供的编辑效率更高,我将非常感激.
在文本文件中,对于每一行,删除从空格开始到行尾的字符.
例如:在包含两行的文件中:
hello world
foo good good
Run Code Online (Sandbox Code Playgroud)
处理后,文件看起来像
hello
foo
Run Code Online (Sandbox Code Playgroud)
我试过了^\+\s,但似乎只处理了行尾的空格
我正在使用VIM搜索和替换类似的东西
:0,$s/min-width:\s\d+/min-width: 61111/gc
但它表示没有发现任何模式,即使我非常清楚地看到有类似的字符串min-width: 768px.如果我将我的vim命令更改为
:0,$s/min-width:\s768/min-width: 61111/gc
它有效.怎么\d没被认出来?
从:
Make the pairs of lines match up by making each second line same as first:
# Appending text:
The name "Vim" is an acronym for "Vi IMproved"
The name "Vim" is an acronym for
# Editing text:
Vim is a text editor originally released by Bram Moolenaar in 1991 for the Amiga
Trivia: Vim is a text editor released by Bram Moolenaar in 1991 for the Amiga
# Deleting text:
Vim has a vi compatibility mode
Vim has …Run Code Online (Sandbox Code Playgroud) 比方说,我有一个文档,其中所有括号都被翻转:
Lorem)ipsum(dolor)坐(amet
我想纠正它:
Lorem(ipsum)dolor(坐)amet
当然我不能用两个替换进行交换; 首先用全部替换全部(,)然后全部)替换(,因为那样我最终会得到:
Lorem(ipsum(dolor(坐着)
请提供一种在vim中为任何一对字符串执行此操作的方法.
更新:
感谢ernix提供了一个很好的答案.对于那些想知道tr函数是什么的人:http:
//vimdoc.sourceforge.net/htmldoc/eval.html#tr()