vim paste multilines before multilines, no Blank - vim

Let's say I have these two blocks:
1
23
456
hello..
world world
codecode
And then I need this block (between 1 and hello.., without any spaces between):
1hello..
23world world
456codecode
What is the best fast way?
I used gvim7.3.46 on windows xp and windows 7
this is my _vimrc
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction
I used C-r", but that did not work.
1
23
456
hello..
world world
codecode
I used C-q, y, C-p, the result is:
1
23
456
1 hello..
23 world world
456codecode

Place the cursor on 1.
Hit <C-v> to enter visual-block mode.
Move the cursor down to 456 and hit $ to select the whole block.
Hit y to yank that block.
Place the cursor on the h in hello.
Hit P.

I would use visual block mode. Do like this:
At the start of the first block, press <C-v> to enter visual block mode.
Select the relevant lines, and press $ to extend the selection to the end of the line.
Press d to delete the first block. This will also copy it.
Then press P at the beginning of the second block to paste the first block before the second block with no spaces in between.
The first line range will then be empty, so you will have to delete those lines if you don't want them.

Using a recursive macro to jump back and forth between to two blocks, deleting and joining lines:
qq}jdd''pkgJj#qq
Notable keystrokes:
'' jumps back to the line where you jumped from the most recently
#q calls the macro q from inside the definition of q
gJ joins two lines without a space between them

Related

Vim Vundle: Plugins do not appear

I have installed Vim and Vundal, but for some reason the plugins that I put in my _vimrc does not appear when type :PluginInstall. Picture:
As you can see on the left, only Plugin 'VundleView/Vundle.vim' appears even though I have added two other plugins into my _vimrc file. (I am using Windows 10 if that matters.)
What could possibly be the problem here? Am I using the wrong _vimrc file or did I miss some steps?
Here is my vimrc file:
" Vim with all enhancements
set nocompatible " be iMproved, required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
syntax off
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'preservim/nerdtree'
Plugin 'tpope/vim-fugitive'
" Keep Plugin commands between vundle#begin/end.
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line
" Use the internal diff if available.
" Otherwise use the special 'diffexpr' for Windows.
if &diffopt !~# 'internal'
set diffexpr=MyDiff()
endif
function! MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg1 = substitute(arg1, '!', '\!', 'g')
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg2 = substitute(arg2, '!', '\!', 'g')
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let arg3 = substitute(arg3, '!', '\!', 'g')
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
if empty(&shellxquote)
let l:shxq_sav = ''
set shellxquote&
endif
let cmd = '"' . $VIMRUNTIME . '\diff"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
let cmd = substitute(cmd, '!', '\!', 'g')
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3
if exists('l:shxq_sav')
let &shellxquote=l:shxq_sav
endif
endfunction

Vim preferences

I've searched high and low but cannot get the correct syntax etc. I'd like to set my vim_rc file so I'm using the evening theme and 16pt Lucida console text as a default. I've tried many combinations and I am not having much joy on the web. At present, I'm receiving the following error:
Error detected while processing C:\Program Files
(x86)\Vim\_vimrc:
line 47:
E518: Unknown option: Console\ 14
and my vim file (based on web advice) looks like the following
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
if empty(&shellxquote)
let l:shxq_sav = ''
set shellxquote&
endif
let cmd = '"' . $VIMRUNTIME . '\diff"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
let cmd = substitute(cmd, '!', '\!', 'g')
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3
if exists('l:shxq_sav')
let &shellxquote=l:shxq_sav
endif
endfunction
set expandtab
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
set textwidth=80
set guifont=Lucida Console\ 14
You have to escape spaces with a backslash. You've already done so for the space after "Console". You just need to also escape the one before "Console".
set guifont=Lucida\ Console\ 14
in _vimrc file:
set guifont=Lucida_Console:h14

Can't install vim-plug

Following the instructions, I put plug.vim in autoload folder and my vimrc looks like this now:
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
call plug#begin('~/.vim/plugged')
call plug#end()
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction
So I added only
call plug#begin('~/.vim/plugged')
call plug#end()
On VIM start up I get
[vim-plug] `git` executable not found. vim-plug requires git.
Using windows 7, please help.
Reinstalled GIT using Run git from Windows command prompt option
https://github.com/VundleVim/Vundle.vim/wiki/Vundle-for-Windows
This sets appropriate PATH variable.
I ran into a similar error on Linux, and solved by just installing git.
sudo apt update
sudo apt install git

How to stop vim from automatically scrolling while typing in insert mode

I have an annoying problem with vim which I have googled to death to no avail. I would like vim to stop scrolling right when I am typing in insert mode. I do not have this problem when I enlarge the vim window, but I would like to keep the window small and compact for my own purposes.
Thanks in advance!
Edit:
As requested by merlin2011 here is the contents of my .vimrc file.
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction
I had this issue as well and I think I managed to fix it, but it wasn't a vim issue. Could you try right clicking on your cmd prmpt window, go into properties and make sure this has been checked? When I checked that box vim stopped locking onto my cursor and scrolling sideways when I typed. Let me know if that works.

setting up vim fireplace, linking clojure code

I just installed VIM and a few plugins, one of which is vim fireplace. A problem I have is that fireplace can't find my clojure code. I put my clojure code under vimfiles/bundle (I'm running windows).
I followed these instructions:
http://kevinmccarthy.org/blog/2013/10/12/setting-up-vim-for-clojure/
When I run a sample clojure function in the command line (which I get to using cqc), I get the following error:
Error detected while processing function <SNR>20_inputeval... foreplay#echo_session_eval..foreplay#session_eval...<SNR>20_eval...6:
line 38
E605: Exception not caught: Error running clojure:Error:Could not find or load main class clojure.main^#
Error detected while processing function <SNR>20_inputeval:
line 4
E71:missing :endif
Here is my .vimrc:
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
syntax on
filetype plugin indent on
execute pathogen#infect()
set nobackup
set nowritebackup
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction
fireplace is not able to set classpath which may be because you are not working with a lein project. But that is not a requirement, you can always connect to a running nrepl ( which can be launched via lein repl) and connect to it from vim using :Connect nrepl://localhost:port.

Resources